diff options
Diffstat (limited to 'interrupt')
-rw-r--r-- | interrupt/fault.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/interrupt/fault.cpp b/interrupt/fault.cpp index 016b74b..9af0eb8 100644 --- a/interrupt/fault.cpp +++ b/interrupt/fault.cpp @@ -12,7 +12,11 @@ inline void __attribute__((naked)) switch_context() { asm volatile ("str sp, [%0]" :: "r" (&Thread::active_thread->sp)); // Update running thread. - Thread::active_thread = Thread::active_thread->next; + if(!Thread::reschedule()) { + // TODO: Set SLEEPONEXIT + } else { + // TODO: Clear SLEEPONEXIT + } // Fetch stack pointer for new thread. asm volatile ("ldr sp, [%0]" :: "r" (&Thread::active_thread->sp)); |