Index: arch/ppc32/include/asm.h
===================================================================
--- arch/ppc32/include/asm.h	(revision 91d5ad627944c61ab128cd4a6e7fa14a370648d5)
+++ arch/ppc32/include/asm.h	(revision 0e30decbacecf8e602e9775ab35737c7e2d101a5)
@@ -121,11 +121,14 @@
 	__address v;
 	
-	__asm__ volatile ("and %0, %%r1, %1\n" : "=r" (v) : "r" (~(STACK_SIZE-1)));
+	__asm__ volatile ("and %0, %%sp, %1\n" : "=r" (v) : "r" (~(STACK_SIZE-1)));
 	
 	return v;
 }
 
+static inline void cpu_sleep(void)
+{
+}
+
 void cpu_halt(void);
-void cpu_sleep(void);
 void asm_delay_loop(__u32 t);
 
Index: arch/ppc32/include/context.h
===================================================================
--- arch/ppc32/include/context.h	(revision 91d5ad627944c61ab128cd4a6e7fa14a370648d5)
+++ arch/ppc32/include/context.h	(revision 0e30decbacecf8e602e9775ab35737c7e2d101a5)
@@ -34,5 +34,5 @@
 #endif
 
-#define SP_DELTA	8
+#define SP_DELTA	16
 
 struct context {
Index: arch/ppc32/include/interrupt.h
===================================================================
--- arch/ppc32/include/interrupt.h	(revision 91d5ad627944c61ab128cd4a6e7fa14a370648d5)
+++ arch/ppc32/include/interrupt.h	(revision 0e30decbacecf8e602e9775ab35737c7e2d101a5)
@@ -35,4 +35,5 @@
 #define VECTOR_DECREMENTER 10
 
+extern void start_decrementer(void);
 extern void interrupt_init(void);
 
Index: arch/ppc32/src/asm.S
===================================================================
--- arch/ppc32/src/asm.S	(revision 91d5ad627944c61ab128cd4a6e7fa14a370648d5)
+++ arch/ppc32/src/asm.S	(revision 0e30decbacecf8e602e9775ab35737c7e2d101a5)
@@ -31,11 +31,7 @@
 .text
 
-.global cpu_sleep
 .global iret
 .global memsetb
 .global memcpy
-
-cpu_sleep:
-	b cpu_sleep
 
 iret:
Index: arch/ppc32/src/boot/boot.S
===================================================================
--- arch/ppc32/src/boot/boot.S	(revision 91d5ad627944c61ab128cd4a6e7fa14a370648d5)
+++ arch/ppc32/src/boot/boot.S	(revision 0e30decbacecf8e602e9775ab35737c7e2d101a5)
@@ -76,5 +76,5 @@
 
 .section K_DATA_START, "aw", @progbits
-	
+
 	.space TEMP_STACK_SIZE
 end_stack:
Index: arch/ppc32/src/dummy.s
===================================================================
--- arch/ppc32/src/dummy.s	(revision 91d5ad627944c61ab128cd4a6e7fa14a370648d5)
+++ arch/ppc32/src/dummy.s	(revision 0e30decbacecf8e602e9775ab35737c7e2d101a5)
@@ -48,3 +48,3 @@
 
 asm_delay_loop:
-	b asm_delay_loop
+	blr
Index: arch/ppc32/src/fpu_context.S
===================================================================
--- arch/ppc32/src/fpu_context.S	(revision 91d5ad627944c61ab128cd4a6e7fa14a370648d5)
+++ arch/ppc32/src/fpu_context.S	(revision 0e30decbacecf8e602e9775ab35737c7e2d101a5)
@@ -81,16 +81,16 @@
 
 fpu_context_save:
-	FPU_CONTEXT_STORE r3
-	
-	mffs fr0
-	stfd fr0, OFFSET_FPSCR(r3)
+//	FPU_CONTEXT_STORE r3
+//	
+//	mffs fr0
+//	stfd fr0, OFFSET_FPSCR(r3)
 	
 	blr
 	
 fpu_context_restore:
-	FPU_CONTEXT_LOAD r3
-	
-	lfd fr0, OFFSET_FPSCR(r3)
-	mtfsf 7, fr0
+//	FPU_CONTEXT_LOAD r3
+//	
+//	lfd fr0, OFFSET_FPSCR(r3)
+//	mtfsf 7, fr0
 	
 	blr
Index: arch/ppc32/src/interrupt.c
===================================================================
--- arch/ppc32/src/interrupt.c	(revision 91d5ad627944c61ab128cd4a6e7fa14a370648d5)
+++ arch/ppc32/src/interrupt.c	(revision 0e30decbacecf8e602e9775ab35737c7e2d101a5)
@@ -34,7 +34,18 @@
 #include <print.h>
 
+
+void start_decrementer(void)
+{
+	asm volatile (
+		"mtdec %0\n"
+		:: "r" (1000)
+	);
+}
+
+
 static void exception_decrementer(int n, istate_t *istate)
 {
 	clock();
+	start_decrementer();
 }
 
Index: arch/ppc32/src/ppc32.c
===================================================================
--- arch/ppc32/src/ppc32.c	(revision 91d5ad627944c61ab128cd4a6e7fa14a370648d5)
+++ arch/ppc32/src/ppc32.c	(revision 0e30decbacecf8e602e9775ab35737c7e2d101a5)
@@ -36,5 +36,8 @@
 {
 	/* Initialize dispatch table */
-	interrupt_init();	
+	interrupt_init();
+	
+	/* Start decrementer */
+	start_decrementer();
 
 	ppc32_console_init();
@@ -58,2 +61,3 @@
 {
 }
+
