Index: arch/ppc32/src/proc/scheduler.c
===================================================================
--- arch/ppc32/src/proc/scheduler.c	(revision 39cea6a27db77024039730f632eb27a57fda09ab)
+++ arch/ppc32/src/proc/scheduler.c	(revision 22cf454db08f8dc472db143a6567d89fb30cc29d)
@@ -28,10 +28,8 @@
 
 #include <arch/mm/page.h>
+#include <arch/boot/boot.h>
 #include <proc/scheduler.h>
 #include <proc/thread.h>
 #include <arch.h>
-
-__address supervisor_sp;
-__address supervisor_sp_physical;
 
 /** Perform ppc32 specific tasks needed before the new task is run. */
@@ -43,6 +41,9 @@
 void before_thread_runs_arch(void)
 {
-	supervisor_sp = (__address) &THREAD->kstack[THREAD_STACK_SIZE - SP_DELTA];
-	supervisor_sp_physical = KA2PA(supervisor_sp_physical);
+	asm volatile (
+		"mtsprg0 %0\n"
+		:
+		: "r" (KA2PA(&THREAD->kstack[THREAD_STACK_SIZE - SP_DELTA]))
+	);
 }
 
