Index: kernel/generic/src/proc/scheduler.c
===================================================================
--- kernel/generic/src/proc/scheduler.c	(revision 151c0503e1c1b615f0f4fe97cc31a4dfe16b78df)
+++ kernel/generic/src/proc/scheduler.c	(revision 5861b60210d8279945afa052d207a686f0cad8f3)
@@ -449,4 +449,11 @@
 	THREAD->kcycles += get_cycle() - THREAD->last_cycle;
 
+	after_thread_ran_arch();
+
+	if (new_state == Sleeping) {
+		/* Prefer the thread after it's woken up. */
+		THREAD->priority = -1;
+	}
+
 	if (!context_save(&THREAD->saved_context)) {
 		/*
@@ -506,13 +513,5 @@
 
 	if (THREAD) {
-		after_thread_ran_arch();
-
 		state_t state = THREAD->state;
-
-		if (state == Sleeping) {
-			/* Prefer the thread after it's woken up. */
-			THREAD->priority = -1;
-		}
-
 		irq_spinlock_unlock(&THREAD->lock, false);
 
