summaryrefslogtreecommitdiffstatshomepage
path: root/ports/stm32/mpu.h
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2019-10-16 23:12:06 +1100
committerDamien George <damien.p.george@gmail.com>2019-10-16 23:12:06 +1100
commit4f2c737b0c05cd138f15703d492ad64d39c3fcfd (patch)
tree8435605d97c9ea58758a92dd93773d77c63c75c9 /ports/stm32/mpu.h
parent595438785879552912a1a6832a4f2715f4e82272 (diff)
downloadmicropython-4f2c737b0c05cd138f15703d492ad64d39c3fcfd.tar.gz
micropython-4f2c737b0c05cd138f15703d492ad64d39c3fcfd.zip
stm32/mpu: Save and restore the IRQ state when configuring MPU.
In case IRQs are already disabled during the MPU configuration. Fixes issue #5152.
Diffstat (limited to 'ports/stm32/mpu.h')
-rw-r--r--ports/stm32/mpu.h8
1 files changed, 4 insertions, 4 deletions
diff --git a/ports/stm32/mpu.h b/ports/stm32/mpu.h
index 1efe93a68b..74ba81496f 100644
--- a/ports/stm32/mpu.h
+++ b/ports/stm32/mpu.h
@@ -78,8 +78,8 @@ static inline void mpu_init(void) {
__ISB();
}
-static inline void mpu_config_start(void) {
- __disable_irq();
+static inline uint32_t mpu_config_start(void) {
+ return disable_irq();
}
static inline void mpu_config_region(uint32_t region, uint32_t base_addr, uint32_t attr_size) {
@@ -88,11 +88,11 @@ static inline void mpu_config_region(uint32_t region, uint32_t base_addr, uint32
MPU->RASR = attr_size;
}
-static inline void mpu_config_end(void) {
+static inline void mpu_config_end(uint32_t irq_state) {
__ISB();
__DSB();
__DMB();
- __enable_irq();
+ enable_irq(irq_state);
}
#else