arch: arc: add support of mpu v3
Add support of ARC mpu version 3 which can have region size down to 32
bytes
Signed-off-by: Yuguo Zou <yuguo.zou@synopsys.com>
diff --git a/arch/arc/core/mpu/arc_mpu_v2_internal.h b/arch/arc/core/mpu/arc_mpu_v2_internal.h
index 20f8cea..12b2c64 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 79b8ee1..f576513 100644
--- a/include/arch/arc/arch.h
+++ b/include/arch/arc/arch.h
@@ -66,7 +66,7 @@
#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 3598eed..13245c7 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);