Index: kernel/generic/src/proc/scheduler.c
===================================================================
--- kernel/generic/src/proc/scheduler.c	(revision e82879c8ac18233b45e32938c1e9b4aeb9b54a70)
+++ kernel/generic/src/proc/scheduler.c	(revision 4ed7870aad9f431ae7d9cd758d59040ce0be5fdf)
@@ -449,10 +449,4 @@
 	THREAD->kcycles += get_cycle() - THREAD->last_cycle;
 
-	/*
-	 * On Sparc, this saves some extra userspace state that's not
-	 * covered by context_save()/context_restore().
-	 */
-	after_thread_ran_arch();
-
 	if (new_state == Sleeping) {
 		/* Prefer the thread after it's woken up. */
@@ -517,4 +511,10 @@
 
 	if (THREAD) {
+		/*
+		 * On Sparc, this saves some extra userspace state that's not
+		 * covered by context_save()/context_restore().
+		 */
+		after_thread_ran_arch();
+
 		state_t state = THREAD->state;
 		irq_spinlock_unlock(&THREAD->lock, false);
