mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
cpu/cortexm_common: work around bug on WFI for STM32
See [1] for details. (archive.org backup at [2]). Fixes https://github.com/RIOT-OS/RIOT/issues/13918 Fixes https://github.com/RIOT-OS/RIOT/issues/14015 [1]: https://cliffle.com/blog/stm32-wfi-bug/ [2]: https://web.archive.org/web/20231205101603/https://cliffle.com/blog/stm32-wfi-bug/
This commit is contained in:
parent
848f3d1ade
commit
1c281d2768
@ -167,6 +167,10 @@ static inline void cortexm_sleep(int deep)
|
|||||||
unsigned state = irq_disable();
|
unsigned state = irq_disable();
|
||||||
__DSB();
|
__DSB();
|
||||||
__WFI();
|
__WFI();
|
||||||
|
/* Some CPUs require an ISB after WFI to work around silicon bugs */
|
||||||
|
#if CORTEXM_ISB_REQUIRED_AFTER_WFI
|
||||||
|
__ISB();
|
||||||
|
#endif
|
||||||
irq_restore(state);
|
irq_restore(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -87,6 +87,16 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enable workaround for bug in WFI by issuing an ISB
|
||||||
|
*
|
||||||
|
* This works around a bug on STM32 systems, see [1] for details, or [2] for
|
||||||
|
* an archive.org backup.
|
||||||
|
* [1]: https://cliffle.com/blog/stm32-wfi-bug
|
||||||
|
* [2]: https://web.archive.org/web/20231205101603/https://cliffle.com/blog/stm32-wfi-bug/
|
||||||
|
*/
|
||||||
|
#define CORTEXM_ISB_REQUIRED_AFTER_WFI 1
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief ARM Cortex-M specific CPU configuration
|
* @brief ARM Cortex-M specific CPU configuration
|
||||||
* @{
|
* @{
|
||||||
|
Loading…
Reference in New Issue
Block a user