projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altos/stm: Validate current task SP in interrupt by looking at PSP
[fw/altos]
/
src
/
kernel
/
ao_task.c
diff --git
a/src/kernel/ao_task.c
b/src/kernel/ao_task.c
index 55e423bb90bae9589f926ddbb3aeae690e2ad48a..104d1074b8b66a6b8286a9e21e1f79d1e3ad7b8e 100644
(file)
--- a/
src/kernel/ao_task.c
+++ b/
src/kernel/ao_task.c
@@
-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);
*/
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))
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
{
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;
#if HAS_TASK_QUEUE
struct ao_task *sleep, *next;
struct ao_list *sleep_queue;