diff --git a/arch/arc/core/mpu/arc_mpu_v2_internal.h b/arch/arc/core/mpu/arc_mpu_v2_internal.h index 20f8cea4b14..12b2c6468d4 100644 --- a/arch/arc/core/mpu/arc_mpu_v2_internal.h +++ b/arch/arc/core/mpu/arc_mpu_v2_internal.h @@ -17,7 +17,12 @@ #define AUX_MPU_RDP_SIZE_MASK (0xE03) /* For MPU version 2, the minimum protection region size is 2048 bytes */ +#if CONFIG_ARC_MPU_VER == 2 #define ARC_FEATURE_MPU_ALIGNMENT_BITS 11 +/* For MPU version 3, the minimum protection region size is 32 bytes */ +#else +#define ARC_FEATURE_MPU_ALIGNMENT_BITS 5 +#endif /** * This internal function initializes a MPU region diff --git a/include/arch/arc/arch.h b/include/arch/arc/arch.h index 79b8ee139db..f5765136fc1 100644 --- a/include/arch/arc/arch.h +++ b/include/arch/arc/arch.h @@ -66,7 +66,7 @@ extern "C" { #ifdef CONFIG_ARC_CORE_MPU #if CONFIG_ARC_MPU_VER == 2 #define Z_ARC_MPU_ALIGN 2048 -#elif CONFIG_ARC_MPU_VER == 4 +#elif (CONFIG_ARC_MPU_VER == 3) || (CONFIG_ARC_MPU_VER == 4) #define Z_ARC_MPU_ALIGN 32 #else #error "Unsupported MPU version" diff --git a/include/arch/arc/v2/linker.ld b/include/arch/arc/v2/linker.ld index 3598eedb5af..13245c70baf 100644 --- a/include/arch/arc/v2/linker.ld +++ b/include/arch/arc/v2/linker.ld @@ -30,7 +30,7 @@ #ifdef CONFIG_ARC_MPU_ENABLE #if CONFIG_ARC_MPU_VER == 2 #define MPU_MIN_SIZE 2048 - #elif CONFIG_ARC_MPU_VER == 4 + #elif (CONFIG_ARC_MPU_VER == 3) || (CONFIG_ARC_MPU_VER == 4) #define MPU_MIN_SIZE 32 #endif #define MPU_MIN_SIZE_ALIGN . = ALIGN(MPU_MIN_SIZE);