Add support for TLS if needed
[fw/altos] / src / stmf0 / ao_arch_funcs.h
index a0c6e08876cbb012e350b18dc585e02346db9c7c..190f9d1766ea7dbd96f1b95c9a2b6ac52c7f3061 100644 (file)
@@ -387,9 +387,8 @@ ao_arch_memory_barrier(void) {
 
 #if HAS_TASK
 static inline void
-ao_arch_init_stack(struct ao_task *task, void *start)
+ao_arch_init_stack(struct ao_task *task, uint32_t *sp, void *start)
 {
-       uint32_t        *sp = &task->stack32[AO_STACK_SIZE >> 2];
        uint32_t        a = (uint32_t) start;
        int             i;
 
@@ -458,6 +457,9 @@ static inline void ao_sleep_mode(void) {
 
        ao_arch_block_interrupts();
 
+       /* Enable power interface clock */
+       stm_rcc.apb1enr |= (1 << STM_RCC_APB1ENR_PWREN);
+       ao_arch_nop();
        stm_scb.scr |= (1 << STM_SCB_SCR_SLEEPDEEP);
        ao_arch_nop();
        stm_pwr.cr |= (1 << STM_PWR_CR_PDDS) | (1 << STM_PWR_CR_LPDS);