Index: tools/ppc32/gencontext.c
===================================================================
--- tools/ppc32/gencontext.c	(revision 37c8975a5116482f4bdd559722bb5883196b0b85)
+++ tools/ppc32/gencontext.c	(revision effee6fbb246d1c32b76583262aed178a9f84add)
@@ -1,5 +1,7 @@
 #include <stdio.h>
+#include <stdint.h>
 
-typedef unsigned int __u32;
+typedef uint32_t __u32;
+typedef uint64_t __u64;
 typedef __u32 ipl_t;
 typedef __u32 __address;
@@ -7,4 +9,5 @@
 #define __ppc32_TYPES_H__
 #include "../../arch/ppc32/include/context.h"
+#include "../../arch/ppc32/include/fpu_context.h"
 
 #define FILENAME "../../arch/ppc32/include/context_offset.h"
@@ -14,4 +17,5 @@
 	FILE *f;
 	struct context *pctx = NULL;
+	struct fpu_context *fpctx = NULL;
 	
 
@@ -26,28 +30,50 @@
 	fprintf(f,"/* struct context */\n");
 
-	fprintf(f,"#define OFFSET_SP   0x%x\n", ((int) &pctx->sp) - (int) pctx);
-	fprintf(f,"#define OFFSET_PC   0x%x\n", ((int) &pctx->pc) - (int) pctx);
-	fprintf(f,"#define OFFSET_R2   0x%x\n", ((int) &pctx->r2) - (int) pctx);
-	fprintf(f,"#define OFFSET_R13  0x%x\n", ((int) &pctx->r13) - (int) pctx);
-	fprintf(f,"#define OFFSET_R14  0x%x\n", ((int) &pctx->r14) - (int) pctx);
-	fprintf(f,"#define OFFSET_R15  0x%x\n", ((int) &pctx->r15) - (int) pctx);
-	fprintf(f,"#define OFFSET_R16  0x%x\n", ((int) &pctx->r16) - (int) pctx);
-	fprintf(f,"#define OFFSET_R17  0x%x\n", ((int) &pctx->r17) - (int) pctx);
-	fprintf(f,"#define OFFSET_R18  0x%x\n", ((int) &pctx->r18) - (int) pctx);
-	fprintf(f,"#define OFFSET_R19  0x%x\n", ((int) &pctx->r19) - (int) pctx);
-	fprintf(f,"#define OFFSET_R20  0x%x\n", ((int) &pctx->r20) - (int) pctx);
-	fprintf(f,"#define OFFSET_R21  0x%x\n", ((int) &pctx->r21) - (int) pctx);
-	fprintf(f,"#define OFFSET_R22  0x%x\n", ((int) &pctx->r22) - (int) pctx);
-	fprintf(f,"#define OFFSET_R23  0x%x\n", ((int) &pctx->r23) - (int) pctx);
-	fprintf(f,"#define OFFSET_R24  0x%x\n", ((int) &pctx->r24) - (int) pctx);
-	fprintf(f,"#define OFFSET_R25  0x%x\n", ((int) &pctx->r25) - (int) pctx);
-	fprintf(f,"#define OFFSET_R26  0x%x\n", ((int) &pctx->r26) - (int) pctx);
-	fprintf(f,"#define OFFSET_R27  0x%x\n", ((int) &pctx->r27) - (int) pctx);
-	fprintf(f,"#define OFFSET_R28  0x%x\n", ((int) &pctx->r28) - (int) pctx);
-	fprintf(f,"#define OFFSET_R29  0x%x\n", ((int) &pctx->r29) - (int) pctx);
-	fprintf(f,"#define OFFSET_R30  0x%x\n", ((int) &pctx->r30) - (int) pctx);
-	fprintf(f,"#define OFFSET_R31  0x%x\n", ((int) &pctx->r31) - (int) pctx);
-	fprintf(f,"#define OFFSET_CR   0x%x\n", ((int) &pctx->cr) - (int) pctx);
+	fprintf(f,"#define OFFSET_SP    0x%x\n", ((int) &pctx->sp) - (int) pctx);
+	fprintf(f,"#define OFFSET_PC    0x%x\n", ((int) &pctx->pc) - (int) pctx);
+	fprintf(f,"#define OFFSET_R2    0x%x\n", ((int) &pctx->r2) - (int) pctx);
+	fprintf(f,"#define OFFSET_R13   0x%x\n", ((int) &pctx->r13) - (int) pctx);
+	fprintf(f,"#define OFFSET_R14   0x%x\n", ((int) &pctx->r14) - (int) pctx);
+	fprintf(f,"#define OFFSET_R15   0x%x\n", ((int) &pctx->r15) - (int) pctx);
+	fprintf(f,"#define OFFSET_R16   0x%x\n", ((int) &pctx->r16) - (int) pctx);
+	fprintf(f,"#define OFFSET_R17   0x%x\n", ((int) &pctx->r17) - (int) pctx);
+	fprintf(f,"#define OFFSET_R18   0x%x\n", ((int) &pctx->r18) - (int) pctx);
+	fprintf(f,"#define OFFSET_R19   0x%x\n", ((int) &pctx->r19) - (int) pctx);
+	fprintf(f,"#define OFFSET_R20   0x%x\n", ((int) &pctx->r20) - (int) pctx);
+	fprintf(f,"#define OFFSET_R21   0x%x\n", ((int) &pctx->r21) - (int) pctx);
+	fprintf(f,"#define OFFSET_R22   0x%x\n", ((int) &pctx->r22) - (int) pctx);
+	fprintf(f,"#define OFFSET_R23   0x%x\n", ((int) &pctx->r23) - (int) pctx);
+	fprintf(f,"#define OFFSET_R24   0x%x\n", ((int) &pctx->r24) - (int) pctx);
+	fprintf(f,"#define OFFSET_R25   0x%x\n", ((int) &pctx->r25) - (int) pctx);
+	fprintf(f,"#define OFFSET_R26   0x%x\n", ((int) &pctx->r26) - (int) pctx);
+	fprintf(f,"#define OFFSET_R27   0x%x\n", ((int) &pctx->r27) - (int) pctx);
+	fprintf(f,"#define OFFSET_R28   0x%x\n", ((int) &pctx->r28) - (int) pctx);
+	fprintf(f,"#define OFFSET_R29   0x%x\n", ((int) &pctx->r29) - (int) pctx);
+	fprintf(f,"#define OFFSET_R30   0x%x\n", ((int) &pctx->r30) - (int) pctx);
+	fprintf(f,"#define OFFSET_R31   0x%x\n", ((int) &pctx->r31) - (int) pctx);
+	fprintf(f,"#define OFFSET_CR    0x%x\n", ((int) &pctx->cr) - (int) pctx);
+	
+	fprintf(f,"\n");
 
+	fprintf(f,"#define OFFSET_FR14  0x%x\n", ((int) &fpctx->fr14) - (int) fpctx);
+	fprintf(f,"#define OFFSET_FR15  0x%x\n", ((int) &fpctx->fr15) - (int) fpctx);
+	fprintf(f,"#define OFFSET_FR16  0x%x\n", ((int) &fpctx->fr16) - (int) fpctx);
+	fprintf(f,"#define OFFSET_FR17  0x%x\n", ((int) &fpctx->fr17) - (int) fpctx);
+	fprintf(f,"#define OFFSET_FR18  0x%x\n", ((int) &fpctx->fr18) - (int) fpctx);
+	fprintf(f,"#define OFFSET_FR19  0x%x\n", ((int) &fpctx->fr19) - (int) fpctx);
+	fprintf(f,"#define OFFSET_FR20  0x%x\n", ((int) &fpctx->fr20) - (int) fpctx);
+	fprintf(f,"#define OFFSET_FR21  0x%x\n", ((int) &fpctx->fr21) - (int) fpctx);
+	fprintf(f,"#define OFFSET_FR22  0x%x\n", ((int) &fpctx->fr22) - (int) fpctx);
+	fprintf(f,"#define OFFSET_FR23  0x%x\n", ((int) &fpctx->fr23) - (int) fpctx);
+	fprintf(f,"#define OFFSET_FR24  0x%x\n", ((int) &fpctx->fr24) - (int) fpctx);
+	fprintf(f,"#define OFFSET_FR25  0x%x\n", ((int) &fpctx->fr25) - (int) fpctx);
+	fprintf(f,"#define OFFSET_FR26  0x%x\n", ((int) &fpctx->fr26) - (int) fpctx);
+	fprintf(f,"#define OFFSET_FR27  0x%x\n", ((int) &fpctx->fr27) - (int) fpctx);
+	fprintf(f,"#define OFFSET_FR28  0x%x\n", ((int) &fpctx->fr28) - (int) fpctx);
+	fprintf(f,"#define OFFSET_FR29  0x%x\n", ((int) &fpctx->fr29) - (int) fpctx);
+	fprintf(f,"#define OFFSET_FR30  0x%x\n", ((int) &fpctx->fr30) - (int) fpctx);
+	fprintf(f,"#define OFFSET_FR31  0x%x\n", ((int) &fpctx->fr31) - (int) fpctx);
+	fprintf(f,"#define OFFSET_FPSCR 0x%x\n", ((int) &fpctx->fpscr) - (int) fpctx);
+	
 	fclose(f);
 
