altos/stm32f04x: Smite the OPL_LAUNCH bit to reset boot config
[fw/altos] / src / stmf0 / ao_arch.h
index 47ac72787aa1801bbd3f56dc891efa0c8402ce44..1450545a10c015d9d33fd2c75f95d5f68eb57f07 100644 (file)
 #define __interrupt(n)
 #define __at(n)
 
-#define ao_arch_reboot() \
-       (stm_scb.aircr = ((STM_SCB_AIRCR_VECTKEY_KEY << STM_SCB_AIRCR_VECTKEY) | \
-                         (1 << STM_SCB_AIRCR_SYSRESETREQ)))
+static inline void ao_arch_reboot(void) {
+       stm_flash.cr = (1 << STM_FLASH_CR_OBL_LAUNCH);
+       stm_scb.aircr = ((STM_SCB_AIRCR_VECTKEY_KEY << STM_SCB_AIRCR_VECTKEY) |
+                        (1 << STM_SCB_AIRCR_SYSRESETREQ));
+}
 
 #define ao_arch_nop()          asm("nop")