arch: arm: cortex-m: add support for clearing NXP MPU regions at boot
Clear NXP MPU regions at boot if CONFIG_INIT_ARCH_HW_AT_BOOT is enabled. Fixes: #34045 Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
This commit is contained in:
parent
eb9cf9e0dc
commit
2b0a481291
1 changed files with 21 additions and 2 deletions
|
@ -19,6 +19,11 @@
|
|||
#include <sys/util.h>
|
||||
#include <arch/arm/aarch32/cortex_m/cmsis.h>
|
||||
#include <linker/linker-defs.h>
|
||||
|
||||
#if defined(CONFIG_CPU_HAS_NXP_MPU)
|
||||
#include <fsl_sysmpu.h>
|
||||
#endif
|
||||
|
||||
/**
|
||||
*
|
||||
* @brief Reset the system
|
||||
|
@ -55,7 +60,21 @@ void z_arm_clear_arm_mpu_config(void)
|
|||
ARM_MPU_ClrRegion(i);
|
||||
}
|
||||
}
|
||||
#endif /* CONFIG_CPU_HAS_ARM_MPU */
|
||||
#elif CONFIG_CPU_HAS_NXP_MPU
|
||||
void z_arm_clear_arm_mpu_config(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
int num_regions = FSL_FEATURE_SYSMPU_DESCRIPTOR_COUNT;
|
||||
|
||||
SYSMPU_Enable(SYSMPU, false);
|
||||
|
||||
/* NXP MPU region 0 is reserved for the debugger */
|
||||
for (i = 1; i < num_regions; i++) {
|
||||
SYSMPU_RegionEnable(SYSMPU, i, false);
|
||||
}
|
||||
}
|
||||
#endif /* CONFIG_CPU_HAS_NXP_MPU */
|
||||
|
||||
#if defined(CONFIG_INIT_ARCH_HW_AT_BOOT)
|
||||
/**
|
||||
|
@ -78,7 +97,7 @@ void z_arm_init_arch_hw_at_boot(void)
|
|||
|
||||
/* Initialize System Control Block components */
|
||||
|
||||
#if defined(CONFIG_CPU_HAS_ARM_MPU)
|
||||
#if defined(CONFIG_CPU_HAS_ARM_MPU) || defined(CONFIG_CPU_HAS_NXP_MPU)
|
||||
/* Clear MPU region configuration */
|
||||
z_arm_clear_arm_mpu_config();
|
||||
#endif /* CONFIG_CPU_HAS_ARM_MPU */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue