diff options
author | Damien George <damien.p.george@gmail.com> | 2019-10-16 23:12:06 +1100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2019-10-16 23:12:06 +1100 |
commit | 4f2c737b0c05cd138f15703d492ad64d39c3fcfd (patch) | |
tree | 8435605d97c9ea58758a92dd93773d77c63c75c9 /ports/stm32/mpu.h | |
parent | 595438785879552912a1a6832a4f2715f4e82272 (diff) | |
download | micropython-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.h | 8 |
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 |