Index: arch/ppc32/src/dummy.s
===================================================================
--- arch/ppc32/src/dummy.s	(revision b1b723ef197f2004f5da6d7c8f3e77a5d52e8b94)
+++ arch/ppc32/src/dummy.s	(revision 14b502e2ad5d561c51916e76bf77408940a5a0d0)
@@ -32,10 +32,6 @@
 .global userspace
 .global sys_tls_set
-.global tlb_invalidate_all
 .global tlb_invalidate_asid
 .global tlb_invalidate_pages
-
-tlb_invalidate_all:
-	b tlb_invalidate_all
 
 tlb_invalidate_asid:
Index: arch/ppc32/src/mm/tlb.c
===================================================================
--- arch/ppc32/src/mm/tlb.c	(revision b1b723ef197f2004f5da6d7c8f3e77a5d52e8b94)
+++ arch/ppc32/src/mm/tlb.c	(revision 14b502e2ad5d561c51916e76bf77408940a5a0d0)
@@ -233,4 +233,14 @@
 
 
+void tlb_invalidate_all(void)
+{
+	ipl_t ipl;
+
+	ipl = interrupts_disable();
+	memsetb((__address) phte, 1 << PHT_BITS, 0);
+	interrupts_restore(ipl);
+}
+
+
 /** Print contents of Page Hash Table. */
 void tlb_print(void)
Index: arch/ppc32/src/proc/scheduler.c
===================================================================
--- arch/ppc32/src/proc/scheduler.c	(revision b1b723ef197f2004f5da6d7c8f3e77a5d52e8b94)
+++ arch/ppc32/src/proc/scheduler.c	(revision 14b502e2ad5d561c51916e76bf77408940a5a0d0)
@@ -41,4 +41,5 @@
 void before_thread_runs_arch(void)
 {
+	tlb_invalidate_all();
 	asm volatile (
 		"mtsprg0 %0\n"
