altos/stm32f04x: Smite the OPL_LAUNCH bit to reset boot config
[fw/altos] / src / stmf0 / ao_arch.h
index db6324cbaf3c8b8032a753322f33af611fc38ab2..1450545a10c015d9d33fd2c75f95d5f68eb57f07 100644 (file)
 
 #define AO_LED_TYPE    uint16_t
 
-#ifndef AO_TICK_TYPE
-#define AO_TICK_TYPE   uint16_t
-#define AO_TICK_SIGNED int16_t
-#endif
-
 #define AO_PORT_TYPE   uint16_t
 
 /* Various definitions to make GCC look more like SDCC */
 
 #define ao_arch_naked_declare  __attribute__((naked))
 #define ao_arch_naked_define
-#define __pdata
-#define __data
-#define __xdata
-#define __code const
-#define __reentrant
 #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")
 
  * ao_romconfig.c
  */
 
-#define AO_ROMCONFIG_VERSION   2
-
-#define AO_ROMCONFIG_SYMBOL(a) __attribute__((section(".romconfig"))) const
+#define AO_ROMCONFIG_SYMBOL __attribute__((section(".init.1"))) const
+#define AO_USBCONFIG_SYMBOL __attribute__((section(".init.2"))) const
 
 extern const uint16_t ao_romconfig_version;
 extern const uint16_t ao_romconfig_check;
 extern const uint16_t ao_serial_number;
 extern const uint32_t ao_radio_cal;
 
-#define ao_arch_task_members\
-       uint32_t *sp;                   /* saved stack pointer */
-
 #define ao_arch_block_interrupts()     asm("cpsid i")
 #define ao_arch_release_interrupts()   asm("cpsie i")
 
@@ -134,7 +122,7 @@ void ao_lcd_font_string(char *s);
 extern const uint32_t  ao_radio_cal;
 
 void
-ao_adc_init();
+ao_adc_init(void);
 
 /* ADC maximum reported value */
 #define AO_ADC_MAX                     4095