Index: kernel/arch/ppc32/Makefile.inc
===================================================================
--- kernel/arch/ppc32/Makefile.inc	(revision 33add3a8e1974ac8117cfbec11267a0c35a85660)
+++ kernel/arch/ppc32/Makefile.inc	(revision e6ed0b186284257ebacd09239fe1704f7224cc8c)
@@ -60,4 +60,6 @@
 
 ARCH_AUTOGENS_AG = \
-	arch/$(KARCH)/include/arch/istate_struct.ag
+	arch/$(KARCH)/include/arch/istate_struct.ag \
+	arch/$(KARCH)/include/arch/context_struct.ag \
+	arch/$(KARCH)/include/arch/fpu_context_struct.ag
 
Index: kernel/arch/ppc32/include/arch/context.h
===================================================================
--- kernel/arch/ppc32/include/arch/context.h	(revision 33add3a8e1974ac8117cfbec11267a0c35a85660)
+++ kernel/arch/ppc32/include/arch/context.h	(revision e6ed0b186284257ebacd09239fe1704f7224cc8c)
@@ -36,5 +36,5 @@
 #define KERN_ppc32_CONTEXT_H_
 
-#include <typedefs.h>
+#include <arch/context_struct.h>
 
 #define SP_DELTA  16
@@ -43,34 +43,4 @@
     context_set_generic(ctx, pc, stack, size)
 
-typedef struct {
-	uintptr_t sp;
-	uintptr_t pc;
-	
-	uint32_t r2;
-	uint32_t r13;
-	uint32_t r14;
-	uint32_t r15;
-	uint32_t r16;
-	uint32_t r17;
-	uint32_t r18;
-	uint32_t r19;
-	uint32_t r20;
-	uint32_t r21;
-	uint32_t r22;
-	uint32_t r23;
-	uint32_t r24;
-	uint32_t r25;
-	uint32_t r26;
-	uint32_t r27;
-	uint32_t r28;
-	uint32_t r29;
-	uint32_t r30;
-	uint32_t r31;
-	
-	uint32_t cr;
-	
-	ipl_t ipl;
-} __attribute__((packed)) context_t;
-
 #endif
 
Index: kernel/arch/ppc32/include/arch/context_offset.h
===================================================================
--- kernel/arch/ppc32/include/arch/context_offset.h	(revision 33add3a8e1974ac8117cfbec11267a0c35a85660)
+++ 	(revision )
@@ -1,154 +1,0 @@
-/*
- * Copyright (c) 2005 Martin Decky
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimer in the
- *   documentation and/or other materials provided with the distribution.
- * - The name of the author may not be used to endorse or promote products
- *   derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef KERN_ppc32_CONTEXT_OFFSET_H_
-#define KERN_ppc32_CONTEXT_OFFSET_H_
-
-#define OFFSET_SP    0x0
-#define OFFSET_PC    0x4
-#define OFFSET_R2    0x8
-#define OFFSET_R13   0xc
-#define OFFSET_R14   0x10
-#define OFFSET_R15   0x14
-#define OFFSET_R16   0x18
-#define OFFSET_R17   0x1c
-#define OFFSET_R18   0x20
-#define OFFSET_R19   0x24
-#define OFFSET_R20   0x28
-#define OFFSET_R21   0x2c
-#define OFFSET_R22   0x30
-#define OFFSET_R23   0x34
-#define OFFSET_R24   0x38
-#define OFFSET_R25   0x3c
-#define OFFSET_R26   0x40
-#define OFFSET_R27   0x44
-#define OFFSET_R28   0x48
-#define OFFSET_R29   0x4c
-#define OFFSET_R30   0x50
-#define OFFSET_R31   0x54
-#define OFFSET_CR    0x58
-
-#define OFFSET_FR0  0x0
-#define OFFSET_FR1  0x8
-#define OFFSET_FR2  0x10
-#define OFFSET_FR3  0x18
-#define OFFSET_FR4  0x20
-#define OFFSET_FR5  0x28
-#define OFFSET_FR6  0x30
-#define OFFSET_FR7  0x38
-#define OFFSET_FR8  0x40
-#define OFFSET_FR9  0x48
-#define OFFSET_FR10  0x50
-#define OFFSET_FR11  0x58
-#define OFFSET_FR12  0x60
-#define OFFSET_FR13  0x68
-#define OFFSET_FR14  0x70
-#define OFFSET_FR15  0x78
-#define OFFSET_FR16  0x80
-#define OFFSET_FR17  0x88
-#define OFFSET_FR18  0x90
-#define OFFSET_FR19  0x98
-#define OFFSET_FR20  0xa0
-#define OFFSET_FR21  0xa8
-#define OFFSET_FR22  0xb0
-#define OFFSET_FR23  0xb8
-#define OFFSET_FR24  0xc0
-#define OFFSET_FR25  0xc8
-#define OFFSET_FR26  0xd0
-#define OFFSET_FR27  0xd8
-#define OFFSET_FR28  0xe0
-#define OFFSET_FR29  0xe8
-#define OFFSET_FR30  0xf0
-#define OFFSET_FR31  0xf8
-#define OFFSET_FPSCR 0x100
-
-#ifdef __ASM__
-
-#ifdef KERNEL
-
-#include <arch/asm/regname.h>
-
-#else /* KERNEL */
-
-#include <libarch/regname.h>
-
-#endif /* KERNEL */
-
-/* ctx: address of the structure with saved context */
-.macro CONTEXT_SAVE_ARCH_CORE ctx:req
-	stw sp, OFFSET_SP(\ctx)
-	stw r2, OFFSET_R2(\ctx)
-	stw r13, OFFSET_R13(\ctx)
-	stw r14, OFFSET_R14(\ctx)
-	stw r15, OFFSET_R15(\ctx)
-	stw r16, OFFSET_R16(\ctx)
-	stw r17, OFFSET_R17(\ctx)
-	stw r18, OFFSET_R18(\ctx)
-	stw r19, OFFSET_R19(\ctx)
-	stw r20, OFFSET_R20(\ctx)
-	stw r21, OFFSET_R21(\ctx)
-	stw r22, OFFSET_R22(\ctx)
-	stw r23, OFFSET_R23(\ctx)
-	stw r24, OFFSET_R24(\ctx)
-	stw r25, OFFSET_R25(\ctx)
-	stw r26, OFFSET_R26(\ctx)
-	stw r27, OFFSET_R27(\ctx)
-	stw r28, OFFSET_R28(\ctx)
-	stw r29, OFFSET_R29(\ctx)
-	stw r30, OFFSET_R30(\ctx)
-	stw r31, OFFSET_R31(\ctx)
-.endm
-
-/* ctx: address of the structure with saved context */
-.macro CONTEXT_RESTORE_ARCH_CORE ctx:req
-	lwz sp, OFFSET_SP(\ctx)
-	lwz r2, OFFSET_R2(\ctx)
-	lwz r13, OFFSET_R13(\ctx)
-	lwz r14, OFFSET_R14(\ctx)
-	lwz r15, OFFSET_R15(\ctx)
-	lwz r16, OFFSET_R16(\ctx)
-	lwz r17, OFFSET_R17(\ctx)
-	lwz r18, OFFSET_R18(\ctx)
-	lwz r19, OFFSET_R19(\ctx)
-	lwz r20, OFFSET_R20(\ctx)
-	lwz r21, OFFSET_R21(\ctx)
-	lwz r22, OFFSET_R22(\ctx)
-	lwz r23, OFFSET_R23(\ctx)
-	lwz r24, OFFSET_R24(\ctx)
-	lwz r25, OFFSET_R25(\ctx)
-	lwz r26, OFFSET_R26(\ctx)
-	lwz r27, OFFSET_R27(\ctx)
-	lwz r28, OFFSET_R28(\ctx)
-	lwz r29, OFFSET_R29(\ctx)
-	lwz r30, OFFSET_R30(\ctx)
-	lwz r31, OFFSET_R31(\ctx)
-.endm
-
-#endif /* __ASM__ */
-
-#endif
Index: kernel/arch/ppc32/include/arch/context_struct.ag
===================================================================
--- kernel/arch/ppc32/include/arch/context_struct.ag	(revision e6ed0b186284257ebacd09239fe1704f7224cc8c)
+++ kernel/arch/ppc32/include/arch/context_struct.ag	(revision e6ed0b186284257ebacd09239fe1704f7224cc8c)
@@ -0,0 +1,139 @@
+# Copyright (c) 2014 Jakub Jermar 
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# - The name of the author may not be used to endorse or promote products
+#   derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+{
+        name : context,
+
+        includes : [
+                {
+                        include : <typedefs.h>
+                }
+        ],
+
+        members : [
+                {
+                        name : sp,
+                        type : uint32_t
+                },
+                {
+                        name : pc,
+                        type : uint32_t
+                },
+
+                {
+                        name : r2,
+                        type : uint32_t
+                },
+                {
+                        name : r13,
+                        type : uint32_t
+                },
+                {
+                        name : r14,
+                        type : uint32_t
+                },
+                {
+                        name : r15,
+                        type : uint32_t
+                },
+                {
+                        name : r16,
+                        type : uint32_t
+                },
+                {
+                        name : r17,
+                        type : uint32_t
+                },
+                {
+                        name : r18,
+                        type : uint32_t
+                },
+                {
+                        name : r19,
+                        type : uint32_t
+                },
+                {
+                        name : r20,
+                        type : uint32_t
+                },
+                {
+                        name : r21,
+                        type : uint32_t
+                },
+                {
+                        name : r22,
+                        type : uint32_t
+                },
+                {
+                        name : r23,
+                        type : uint32_t
+                },
+                {
+                        name : r24,
+                        type : uint32_t
+                },
+                {
+                        name : r25,
+                        type : uint32_t
+                },
+                {
+                        name : r26,
+                        type : uint32_t
+                },
+                {
+                        name : r27,
+                        type : uint32_t
+                },
+                {
+                        name : r28,
+                        type : uint32_t
+                },
+                {
+                        name : r29,
+                        type : uint32_t
+                },
+                {
+                        name : r30,
+                        type : uint32_t
+                },
+                {
+                        name : r31,
+                        type : uint32_t
+                },
+
+                {
+                        name : cr,
+                        type : uint32_t
+                },
+
+                {
+                        name : ipl,
+                        type : ipl_t
+                }
+        ]
+}
+
Index: kernel/arch/ppc32/include/arch/fpu_context.h
===================================================================
--- kernel/arch/ppc32/include/arch/fpu_context.h	(revision 33add3a8e1974ac8117cfbec11267a0c35a85660)
+++ kernel/arch/ppc32/include/arch/fpu_context.h	(revision e6ed0b186284257ebacd09239fe1704f7224cc8c)
@@ -38,41 +38,5 @@
 #define FPU_CONTEXT_ALIGN	8	
 
-#include <typedefs.h>
-
-typedef struct {
-	uint64_t fr0;
-	uint64_t fr1;
-	uint64_t fr2;
-	uint64_t fr3;
-	uint64_t fr4;
-	uint64_t fr5;
-	uint64_t fr6;
-	uint64_t fr7;
-	uint64_t fr8;
-	uint64_t fr9;
-	uint64_t fr10;
-	uint64_t fr11;
-	uint64_t fr12;
-	uint64_t fr13;
-	uint64_t fr14;
-	uint64_t fr15;
-	uint64_t fr16;
-	uint64_t fr17;
-	uint64_t fr18;
-	uint64_t fr19;
-	uint64_t fr20;
-	uint64_t fr21;
-	uint64_t fr22;
-	uint64_t fr23;
-	uint64_t fr24;
-	uint64_t fr25;
-	uint64_t fr26;
-	uint64_t fr27;
-	uint64_t fr28;
-	uint64_t fr29;
-	uint64_t fr30;
-	uint64_t fr31;
-	uint64_t fpscr;
-} __attribute__ ((packed)) fpu_context_t;
+#include <arch/fpu_context_struct.h>
 
 #endif
Index: kernel/arch/ppc32/include/arch/fpu_context_struct.ag
===================================================================
--- kernel/arch/ppc32/include/arch/fpu_context_struct.ag	(revision e6ed0b186284257ebacd09239fe1704f7224cc8c)
+++ kernel/arch/ppc32/include/arch/fpu_context_struct.ag	(revision e6ed0b186284257ebacd09239fe1704f7224cc8c)
@@ -0,0 +1,173 @@
+# Copyright (c) 2014 Jakub Jermar 
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# - The name of the author may not be used to endorse or promote products
+#   derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+{
+        name : fpu_context,
+
+        includes : [
+                {
+                        include : <typedefs.h>
+                }
+        ],
+
+        members : [
+                {
+                        name : fr0,
+                        type : uint64_t
+                },
+                {
+                        name : fr1,
+                        type : uint64_t
+                },
+                {
+                        name : fr2,
+                        type : uint64_t
+                },
+                {
+                        name : fr3,
+                        type : uint64_t
+                },
+                {
+                        name : fr4,
+                        type : uint64_t
+                },
+                {
+                        name : fr5,
+                        type : uint64_t
+                },
+                {
+                        name : fr6,
+                        type : uint64_t
+                },
+                {
+                        name : fr7,
+                        type : uint64_t
+                },
+                {
+                        name : fr8,
+                        type : uint64_t
+                },
+                {
+                        name : fr9,
+                        type : uint64_t
+                },
+                {
+                        name : fr10,
+                        type : uint64_t
+                },
+                {
+                        name : fr11,
+                        type : uint64_t
+                },
+                {
+                        name : fr12,
+                        type : uint64_t
+                },
+                {
+                        name : fr13,
+                        type : uint64_t
+                },
+                {
+                        name : fr14,
+                        type : uint64_t
+                },
+                {
+                        name : fr15,
+                        type : uint64_t
+                },
+                {
+                        name : fr16,
+                        type : uint64_t
+                },
+                {
+                        name : fr17,
+                        type : uint64_t
+                },
+                {
+                        name : fr18,
+                        type : uint64_t
+                },
+                {
+                        name : fr19,
+                        type : uint64_t
+                },
+                {
+                        name : fr20,
+                        type : uint64_t
+                },
+                {
+                        name : fr21,
+                        type : uint64_t
+                },
+                {
+                        name : fr22,
+                        type : uint64_t
+                },
+                {
+                        name : fr23,
+                        type : uint64_t
+                },
+                {
+                        name : fr24,
+                        type : uint64_t
+                },
+                {
+                        name : fr25,
+                        type : uint64_t
+                },
+                {
+                        name : fr26,
+                        type : uint64_t
+                },
+                {
+                        name : fr27,
+                        type : uint64_t
+                },
+                {
+                        name : fr28,
+                        type : uint64_t
+                },
+                {
+                        name : fr29,
+                        type : uint64_t
+                },
+                {
+                        name : fr30,
+                        type : uint64_t
+                },
+                {
+                        name : fr31,
+                        type : uint64_t
+                },
+                {
+                        name : fpscr,
+                        type : uint64_t
+                }
+
+        ]
+}
+
Index: kernel/arch/ppc32/src/context.S
===================================================================
--- kernel/arch/ppc32/src/context.S	(revision 33add3a8e1974ac8117cfbec11267a0c35a85660)
+++ kernel/arch/ppc32/src/context.S	(revision e6ed0b186284257ebacd09239fe1704f7224cc8c)
@@ -27,5 +27,6 @@
 #
 
-#include <arch/context_offset.h>
+#include <arch/context_struct.h>
+#include <arch/asm/regname.h>
 
 .text
@@ -35,11 +36,31 @@
 
 context_save_arch:
-	CONTEXT_SAVE_ARCH_CORE r3
+	stw sp, CONTEXT_OFFSET_SP(r3)
+	stw r2, CONTEXT_OFFSET_R2(r3)
+	stw r13, CONTEXT_OFFSET_R13(r3)
+	stw r14, CONTEXT_OFFSET_R14(r3)
+	stw r15, CONTEXT_OFFSET_R15(r3)
+	stw r16, CONTEXT_OFFSET_R16(r3)
+	stw r17, CONTEXT_OFFSET_R17(r3)
+	stw r18, CONTEXT_OFFSET_R18(r3)
+	stw r19, CONTEXT_OFFSET_R19(r3)
+	stw r20, CONTEXT_OFFSET_R20(r3)
+	stw r21, CONTEXT_OFFSET_R21(r3)
+	stw r22, CONTEXT_OFFSET_R22(r3)
+	stw r23, CONTEXT_OFFSET_R23(r3)
+	stw r24, CONTEXT_OFFSET_R24(r3)
+	stw r25, CONTEXT_OFFSET_R25(r3)
+	stw r26, CONTEXT_OFFSET_R26(r3)
+	stw r27, CONTEXT_OFFSET_R27(r3)
+	stw r28, CONTEXT_OFFSET_R28(r3)
+	stw r29, CONTEXT_OFFSET_R29(r3)
+	stw r30, CONTEXT_OFFSET_R30(r3)
+	stw r31, CONTEXT_OFFSET_R31(r3)
 	
 	mflr r4
-	stw r4, OFFSET_PC(r3)
+	stw r4, CONTEXT_OFFSET_PC(r3)
 	
 	mfcr r4
-	stw r4, OFFSET_CR(r3)
+	stw r4, CONTEXT_OFFSET_CR(r3)
 	
 	# context_save returns 1
@@ -48,10 +69,30 @@
 
 context_restore_arch:
-	CONTEXT_RESTORE_ARCH_CORE r3
+	lwz sp, CONTEXT_OFFSET_SP(r3)
+	lwz r2, CONTEXT_OFFSET_R2(r3)
+	lwz r13, CONTEXT_OFFSET_R13(r3)
+	lwz r14, CONTEXT_OFFSET_R14(r3)
+	lwz r15, CONTEXT_OFFSET_R15(r3)
+	lwz r16, CONTEXT_OFFSET_R16(r3)
+	lwz r17, CONTEXT_OFFSET_R17(r3)
+	lwz r18, CONTEXT_OFFSET_R18(r3)
+	lwz r19, CONTEXT_OFFSET_R19(r3)
+	lwz r20, CONTEXT_OFFSET_R20(r3)
+	lwz r21, CONTEXT_OFFSET_R21(r3)
+	lwz r22, CONTEXT_OFFSET_R22(r3)
+	lwz r23, CONTEXT_OFFSET_R23(r3)
+	lwz r24, CONTEXT_OFFSET_R24(r3)
+	lwz r25, CONTEXT_OFFSET_R25(r3)
+	lwz r26, CONTEXT_OFFSET_R26(r3)
+	lwz r27, CONTEXT_OFFSET_R27(r3)
+	lwz r28, CONTEXT_OFFSET_R28(r3)
+	lwz r29, CONTEXT_OFFSET_R29(r3)
+	lwz r30, CONTEXT_OFFSET_R30(r3)
+	lwz r31, CONTEXT_OFFSET_R31(r3)
 	
-	lwz r4, OFFSET_CR(r3)
+	lwz r4, CONTEXT_OFFSET_CR(r3)
 	mtcr r4
 	
-	lwz r4, OFFSET_PC(r3)
+	lwz r4, CONTEXT_OFFSET_PC(r3)
 	mtlr r4
 	
Index: kernel/arch/ppc32/src/fpu_context.S
===================================================================
--- kernel/arch/ppc32/src/fpu_context.S	(revision 33add3a8e1974ac8117cfbec11267a0c35a85660)
+++ kernel/arch/ppc32/src/fpu_context.S	(revision e6ed0b186284257ebacd09239fe1704f7224cc8c)
@@ -28,5 +28,5 @@
 
 #include <arch/asm/regname.h>
-#include <arch/context_offset.h>
+#include <arch/fpu_context_struct.h>
 #include <arch/msr.h>
 
@@ -40,71 +40,71 @@
 
 .macro FPU_CONTEXT_STORE r
-	stfd fr0, OFFSET_FR0(\r)
-	stfd fr1, OFFSET_FR1(\r)
-	stfd fr2, OFFSET_FR2(\r)
-	stfd fr3, OFFSET_FR3(\r)
-	stfd fr4, OFFSET_FR4(\r)
-	stfd fr5, OFFSET_FR5(\r)
-	stfd fr6, OFFSET_FR6(\r)
-	stfd fr7, OFFSET_FR7(\r)
-	stfd fr8, OFFSET_FR8(\r)
-	stfd fr9, OFFSET_FR9(\r)
-	stfd fr10, OFFSET_FR10(\r)
-	stfd fr11, OFFSET_FR11(\r)
-	stfd fr12, OFFSET_FR12(\r)
-	stfd fr13, OFFSET_FR13(\r)
-	stfd fr14, OFFSET_FR14(\r)
-	stfd fr15, OFFSET_FR15(\r)
-	stfd fr16, OFFSET_FR16(\r)
-	stfd fr17, OFFSET_FR17(\r)
-	stfd fr18, OFFSET_FR18(\r)
-	stfd fr19, OFFSET_FR19(\r)
-	stfd fr20, OFFSET_FR20(\r)
-	stfd fr21, OFFSET_FR21(\r)
-	stfd fr22, OFFSET_FR22(\r)
-	stfd fr23, OFFSET_FR23(\r)
-	stfd fr24, OFFSET_FR24(\r)
-	stfd fr25, OFFSET_FR25(\r)
-	stfd fr26, OFFSET_FR26(\r)
-	stfd fr27, OFFSET_FR27(\r)
-	stfd fr28, OFFSET_FR28(\r)
-	stfd fr29, OFFSET_FR29(\r)
-	stfd fr30, OFFSET_FR30(\r)
-	stfd fr31, OFFSET_FR31(\r)
+	stfd fr0, FPU_CONTEXT_OFFSET_FR0(\r)
+	stfd fr1, FPU_CONTEXT_OFFSET_FR1(\r)
+	stfd fr2, FPU_CONTEXT_OFFSET_FR2(\r)
+	stfd fr3, FPU_CONTEXT_OFFSET_FR3(\r)
+	stfd fr4, FPU_CONTEXT_OFFSET_FR4(\r)
+	stfd fr5, FPU_CONTEXT_OFFSET_FR5(\r)
+	stfd fr6, FPU_CONTEXT_OFFSET_FR6(\r)
+	stfd fr7, FPU_CONTEXT_OFFSET_FR7(\r)
+	stfd fr8, FPU_CONTEXT_OFFSET_FR8(\r)
+	stfd fr9, FPU_CONTEXT_OFFSET_FR9(\r)
+	stfd fr10, FPU_CONTEXT_OFFSET_FR10(\r)
+	stfd fr11, FPU_CONTEXT_OFFSET_FR11(\r)
+	stfd fr12, FPU_CONTEXT_OFFSET_FR12(\r)
+	stfd fr13, FPU_CONTEXT_OFFSET_FR13(\r)
+	stfd fr14, FPU_CONTEXT_OFFSET_FR14(\r)
+	stfd fr15, FPU_CONTEXT_OFFSET_FR15(\r)
+	stfd fr16, FPU_CONTEXT_OFFSET_FR16(\r)
+	stfd fr17, FPU_CONTEXT_OFFSET_FR17(\r)
+	stfd fr18, FPU_CONTEXT_OFFSET_FR18(\r)
+	stfd fr19, FPU_CONTEXT_OFFSET_FR19(\r)
+	stfd fr20, FPU_CONTEXT_OFFSET_FR20(\r)
+	stfd fr21, FPU_CONTEXT_OFFSET_FR21(\r)
+	stfd fr22, FPU_CONTEXT_OFFSET_FR22(\r)
+	stfd fr23, FPU_CONTEXT_OFFSET_FR23(\r)
+	stfd fr24, FPU_CONTEXT_OFFSET_FR24(\r)
+	stfd fr25, FPU_CONTEXT_OFFSET_FR25(\r)
+	stfd fr26, FPU_CONTEXT_OFFSET_FR26(\r)
+	stfd fr27, FPU_CONTEXT_OFFSET_FR27(\r)
+	stfd fr28, FPU_CONTEXT_OFFSET_FR28(\r)
+	stfd fr29, FPU_CONTEXT_OFFSET_FR29(\r)
+	stfd fr30, FPU_CONTEXT_OFFSET_FR30(\r)
+	stfd fr31, FPU_CONTEXT_OFFSET_FR31(\r)
 .endm
 
 .macro FPU_CONTEXT_LOAD r
-	lfd fr0, OFFSET_FR0(\r)
-	lfd fr1, OFFSET_FR1(\r)
-	lfd fr2, OFFSET_FR2(\r)
-	lfd fr3, OFFSET_FR3(\r)
-	lfd fr4, OFFSET_FR4(\r)
-	lfd fr5, OFFSET_FR5(\r)
-	lfd fr6, OFFSET_FR6(\r)
-	lfd fr7, OFFSET_FR7(\r)
-	lfd fr8, OFFSET_FR8(\r)
-	lfd fr9, OFFSET_FR9(\r)
-	lfd fr10, OFFSET_FR10(\r)
-	lfd fr11, OFFSET_FR11(\r)
-	lfd fr12, OFFSET_FR12(\r)
-	lfd fr13, OFFSET_FR13(\r)
-	lfd fr14, OFFSET_FR14(\r)
-	lfd fr15, OFFSET_FR15(\r)
-	lfd fr16, OFFSET_FR16(\r)
-	lfd fr17, OFFSET_FR17(\r)
-	lfd fr18, OFFSET_FR18(\r)
-	lfd fr19, OFFSET_FR19(\r)
-	lfd fr20, OFFSET_FR20(\r)
-	lfd fr21, OFFSET_FR21(\r)
-	lfd fr22, OFFSET_FR22(\r)
-	lfd fr23, OFFSET_FR23(\r)
-	lfd fr24, OFFSET_FR24(\r)
-	lfd fr25, OFFSET_FR25(\r)
-	lfd fr26, OFFSET_FR26(\r)
-	lfd fr27, OFFSET_FR27(\r)
-	lfd fr28, OFFSET_FR28(\r)
-	lfd fr29, OFFSET_FR29(\r)
-	lfd fr30, OFFSET_FR30(\r)
-	lfd fr31, OFFSET_FR31(\r)
+	lfd fr0, FPU_CONTEXT_OFFSET_FR0(\r)
+	lfd fr1, FPU_CONTEXT_OFFSET_FR1(\r)
+	lfd fr2, FPU_CONTEXT_OFFSET_FR2(\r)
+	lfd fr3, FPU_CONTEXT_OFFSET_FR3(\r)
+	lfd fr4, FPU_CONTEXT_OFFSET_FR4(\r)
+	lfd fr5, FPU_CONTEXT_OFFSET_FR5(\r)
+	lfd fr6, FPU_CONTEXT_OFFSET_FR6(\r)
+	lfd fr7, FPU_CONTEXT_OFFSET_FR7(\r)
+	lfd fr8, FPU_CONTEXT_OFFSET_FR8(\r)
+	lfd fr9, FPU_CONTEXT_OFFSET_FR9(\r)
+	lfd fr10, FPU_CONTEXT_OFFSET_FR10(\r)
+	lfd fr11, FPU_CONTEXT_OFFSET_FR11(\r)
+	lfd fr12, FPU_CONTEXT_OFFSET_FR12(\r)
+	lfd fr13, FPU_CONTEXT_OFFSET_FR13(\r)
+	lfd fr14, FPU_CONTEXT_OFFSET_FR14(\r)
+	lfd fr15, FPU_CONTEXT_OFFSET_FR15(\r)
+	lfd fr16, FPU_CONTEXT_OFFSET_FR16(\r)
+	lfd fr17, FPU_CONTEXT_OFFSET_FR17(\r)
+	lfd fr18, FPU_CONTEXT_OFFSET_FR18(\r)
+	lfd fr19, FPU_CONTEXT_OFFSET_FR19(\r)
+	lfd fr20, FPU_CONTEXT_OFFSET_FR20(\r)
+	lfd fr21, FPU_CONTEXT_OFFSET_FR21(\r)
+	lfd fr22, FPU_CONTEXT_OFFSET_FR22(\r)
+	lfd fr23, FPU_CONTEXT_OFFSET_FR23(\r)
+	lfd fr24, FPU_CONTEXT_OFFSET_FR24(\r)
+	lfd fr25, FPU_CONTEXT_OFFSET_FR25(\r)
+	lfd fr26, FPU_CONTEXT_OFFSET_FR26(\r)
+	lfd fr27, FPU_CONTEXT_OFFSET_FR27(\r)
+	lfd fr28, FPU_CONTEXT_OFFSET_FR28(\r)
+	lfd fr29, FPU_CONTEXT_OFFSET_FR29(\r)
+	lfd fr30, FPU_CONTEXT_OFFSET_FR30(\r)
+	lfd fr31, FPU_CONTEXT_OFFSET_FR31(\r)
 .endm
 
@@ -113,10 +113,10 @@
 	
 	mffs fr0
-	stfd fr0, OFFSET_FPSCR(r3)
+	stfd fr0, FPU_CONTEXT_OFFSET_FPSCR(r3)
 	
 	blr
 
 fpu_context_restore:
-	lfd fr0, OFFSET_FPSCR(r3)
+	lfd fr0, FPU_CONTEXT_OFFSET_FPSCR(r3)
 	mtfsf 7, fr0
 
