altos/stm: Validate current task SP in interrupt by looking at PSP
[fw/altos] / src / kernel / ao_task.c
index 55e423bb90bae9589f926ddbb3aeae690e2ad48a..104d1074b8b66a6b8286a9e21e1f79d1e3ad7b8e 100644 (file)
@@ -355,7 +355,6 @@ ao_yield(void) ao_arch_naked_define
         */
        if (ao_cur_task->wchan == NULL)
                ao_task_to_run_queue(ao_cur_task);
-       ao_cur_task = NULL;
        for (;;) {
                ao_arch_memory_barrier();
                if (!ao_list_is_empty(&run_queue))
@@ -425,6 +424,7 @@ ao_sleep(__xdata void *wchan)
 void
 ao_wakeup(__xdata void *wchan) __reentrant
 {
+       ao_validate_cur_stack();
 #if HAS_TASK_QUEUE
        struct ao_task  *sleep, *next;
        struct ao_list  *sleep_queue;