arch: arm: Create a MPU entry for relocated code
Code relocated using CONFIG_CODE_DATA_RELOCATION_SRAM should
be allowed to execute from SRAM
Signed-off-by: Mahesh Mahadevan <mahesh.mahadevan@nxp.com>
diff --git a/arch/arm/core/aarch32/cortex_m/mpu/arm_core_mpu.c b/arch/arm/core/aarch32/cortex_m/mpu/arm_core_mpu.c
index 5a7e04e..5ad66fe 100644
--- a/arch/arm/core/aarch32/cortex_m/mpu/arm_core_mpu.c
+++ b/arch/arm/core/aarch32/cortex_m/mpu/arm_core_mpu.c
@@ -55,6 +55,11 @@
uint32_t z_arm_mpu_stack_guard_and_fpu_adjust(struct k_thread *thread);
#endif
+#if defined(CONFIG_CODE_DATA_RELOCATION_SRAM)
+extern char __sram_text_start[];
+extern char __sram_text_size[];
+#endif
+
static const struct z_arm_mpu_partition static_regions[] = {
#if defined(CONFIG_COVERAGE_GCOV) && defined(CONFIG_USERSPACE)
{
@@ -82,6 +87,14 @@
.attr = K_MEM_PARTITION_P_RX_U_RX,
},
#endif /* CONFIG_ARCH_HAS_RAMFUNC_SUPPORT */
+#if defined(CONFIG_CODE_DATA_RELOCATION_SRAM)
+ {
+ /* RAM area for relocated text */
+ .start = (uint32_t)&__sram_text_start,
+ .size = (uint32_t)&__sram_text_size,
+ .attr = K_MEM_PARTITION_P_RX_U_RX,
+ },
+#endif /* CONFIG_CODE_DATA_RELOCATION_SRAM */
#if !defined(CONFIG_MULTITHREADING) && defined(CONFIG_MPU_STACK_GUARD)
/* Main stack MPU guard to detect overflow.
* Note: