diff --git a/core/thread.c b/core/thread.c index 42ab230..0aa406d 100644 --- a/core/thread.c +++ b/core/thread.c @@ -132,11 +132,11 @@ struct cpu_state *threadSwitch(struct cpu_state *prevCpu) disable_IRQs(flags); nextThread = threadSelectNext(); + currentThread->cpuState = prevCpu; if (nextThread != currentThread) { - currentThread->cpuState = prevCpu; - currentThread->state = READY; - currentThread = nextThread; - currentThread->state = RUNNING; + currentThread->state = READY; + currentThread = nextThread; + currentThread->state = RUNNING; threadPrepareContext(nextThread); }