Initial commit
Initial commit.
This commit is contained in:
55
bootloader/mcuboot/boot/zephyr/arm_cleanup.c
Normal file
55
bootloader/mcuboot/boot/zephyr/arm_cleanup.c
Normal file
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Nordic Semiconductor ASA
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <zephyr/toolchain.h>
|
||||
|
||||
#include <cmsis_core.h>
|
||||
#if CONFIG_CPU_HAS_NXP_MPU
|
||||
#include <fsl_sysmpu.h>
|
||||
#endif
|
||||
|
||||
void cleanup_arm_nvic(void) {
|
||||
/* Allow any pending interrupts to be recognized */
|
||||
__ISB();
|
||||
__disable_irq();
|
||||
|
||||
/* Disable NVIC interrupts */
|
||||
for (uint8_t i = 0; i < ARRAY_SIZE(NVIC->ICER); i++) {
|
||||
NVIC->ICER[i] = 0xFFFFFFFF;
|
||||
}
|
||||
/* Clear pending NVIC interrupts */
|
||||
for (uint8_t i = 0; i < ARRAY_SIZE(NVIC->ICPR); i++) {
|
||||
NVIC->ICPR[i] = 0xFFFFFFFF;
|
||||
}
|
||||
}
|
||||
|
||||
#if CONFIG_CPU_HAS_ARM_MPU
|
||||
__weak void z_arm_clear_arm_mpu_config(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
int num_regions =
|
||||
((MPU->TYPE & MPU_TYPE_DREGION_Msk) >> MPU_TYPE_DREGION_Pos);
|
||||
|
||||
for (i = 0; i < num_regions; i++) {
|
||||
ARM_MPU_ClrRegion(i);
|
||||
}
|
||||
}
|
||||
#elif CONFIG_CPU_HAS_NXP_MPU
|
||||
__weak 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
|
||||
Reference in New Issue
Block a user