Index: arch/ppc32/src/asm.S
===================================================================
--- arch/ppc32/src/asm.S	(revision 3debedeccc1f631c9b858502a18f26ae092aab18)
+++ arch/ppc32/src/asm.S	(revision 0e4dd7b95bffe673fac48922bc9a9259c32b00ad)
@@ -27,5 +27,5 @@
 #
 
-#include <arch/asm/macro.h>
+#include <arch/asm/regname.h>
 
 .text
Index: arch/ppc32/src/context.S
===================================================================
--- arch/ppc32/src/context.S	(revision 3debedeccc1f631c9b858502a18f26ae092aab18)
+++ arch/ppc32/src/context.S	(revision 0e4dd7b95bffe673fac48922bc9a9259c32b00ad)
@@ -27,5 +27,6 @@
 #
 
-#include <arch/asm/macro.h>
+#include <arch/asm/regname.h>
+#include <arch/context_offset.h>
 
 .text   
@@ -34,9 +35,60 @@
 .global context_restore_arch
 
+.macro CONTEXT_STORE r
+	stw sp, OFFSET_SP(\r)
+	stw r2, OFFSET_R2(\r)
+	stw r13, OFFSET_R13(\r)
+	stw r14, OFFSET_R14(\r)
+	stw r15, OFFSET_R15(\r)
+	stw r16, OFFSET_R16(\r)
+	stw r17, OFFSET_R17(\r)
+	stw r18, OFFSET_R18(\r)
+	stw r19, OFFSET_R19(\r)
+	stw r20, OFFSET_R20(\r)
+	stw r21, OFFSET_R21(\r)
+	stw r22, OFFSET_R22(\r)
+	stw r23, OFFSET_R23(\r)
+	stw r24, OFFSET_R24(\r)
+	stw r25, OFFSET_R25(\r)
+	stw r26, OFFSET_R26(\r)
+	stw r27, OFFSET_R27(\r)
+	stw r28, OFFSET_R28(\r)
+	stw r29, OFFSET_R29(\r)
+	stw r30, OFFSET_R30(\r)
+	stw r31, OFFSET_R31(\r)
+.endm
+
+.macro CONTEXT_LOAD r
+	lwz sp, OFFSET_SP(\r)
+	lwz r2, OFFSET_R2(\r)
+	lwz r13, OFFSET_R13(\r)
+	lwz r14, OFFSET_R14(\r)
+	lwz r15, OFFSET_R15(\r)
+	lwz r16, OFFSET_R16(\r)
+	lwz r17, OFFSET_R17(\r)
+	lwz r18, OFFSET_R18(\r)
+	lwz r19, OFFSET_R19(\r)
+	lwz r20, OFFSET_R20(\r)
+	lwz r21, OFFSET_R21(\r)
+	lwz r22, OFFSET_R22(\r)
+	lwz r23, OFFSET_R23(\r)
+	lwz r24, OFFSET_R24(\r)
+	lwz r25, OFFSET_R25(\r)
+	lwz r26, OFFSET_R26(\r)
+	lwz r27, OFFSET_R27(\r)
+	lwz r28, OFFSET_R28(\r)
+	lwz r29, OFFSET_R29(\r)
+	lwz r30, OFFSET_R30(\r)
+	lwz r31, OFFSET_R31(\r)
+.endm
+
 context_save_arch:
-	REGISTERS_STORE r3
+	CONTEXT_STORE r3
 	
-	mflr r3
-	stw r3, 128(r3)
+	mflr r4
+	stw r4, OFFSET_PC(r3)
+	
+	mfcr r4
+	stw r4, OFFSET_CR(r3)
 	
 	# context_save returns 1
@@ -45,8 +97,11 @@
 	
 context_restore_arch:
-	REGISTERS_LOAD r3
+	CONTEXT_LOAD r3
 	
-	lwz r3, 128(r3)
-	mtlr r3
+	lwz r4, OFFSET_CR(r3)
+	mtcr r4
+	
+	lwz r4, OFFSET_PC(r3)
+	mtlr r4
 	
 	# context_restore returns 0
Index: arch/ppc32/src/start.S
===================================================================
--- arch/ppc32/src/start.S	(revision 3debedeccc1f631c9b858502a18f26ae092aab18)
+++ arch/ppc32/src/start.S	(revision 0e4dd7b95bffe673fac48922bc9a9259c32b00ad)
@@ -27,5 +27,5 @@
 #
 
-#include <arch/asm/macro.h>
+#include <arch/asm/regname.h>
 #include <arch/asm/spr.h>
 
