summaryrefslogtreecommitdiff
path: root/interrupt/fault.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'interrupt/fault.cpp')
-rw-r--r--interrupt/fault.cpp6
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));