Index: tools/mips/gencontext.c
===================================================================
--- tools/mips/gencontext.c	(revision e84439a6b96e0c83a94019809dee452529612fe7)
+++ tools/mips/gencontext.c	(revision e84439a6b96e0c83a94019809dee452529612fe7)
@@ -0,0 +1,43 @@
+#include <stdio.h>
+
+
+typedef unsigned int __u32;
+typedef __u32 pri_t;
+
+#define __mips_TYPES_H_
+#include "../../arch/mips/include/context.h"
+
+#define FILENAME "../../arch/mips/src/context_offset.h"
+
+int main(void)
+{
+	FILE *f;
+	struct context ctx;
+	struct context *pctx = &ctx;
+
+	f = fopen(FILENAME,"w");
+	if (!f) {
+		perror(FILENAME);
+		return 1;
+	}
+
+	fprintf(f, "/* This file is automatically generated by %s. */\n", __FILE__);	
+
+	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_S0  0x%x\n",((int)&pctx->s0) - (int )pctx);
+	fprintf(f,"#define OFFSET_S1  0x%x\n",((int)&pctx->s1) - (int )pctx);
+	fprintf(f,"#define OFFSET_S2  0x%x\n",((int)&pctx->s2) - (int )pctx);
+	fprintf(f,"#define OFFSET_S3  0x%x\n",((int)&pctx->s3) - (int )pctx);
+	fprintf(f,"#define OFFSET_S4  0x%x\n",((int)&pctx->s4) - (int )pctx);
+	fprintf(f,"#define OFFSET_S5  0x%x\n",((int)&pctx->s5) - (int )pctx);
+	fprintf(f,"#define OFFSET_S6  0x%x\n",((int)&pctx->s6) - (int )pctx);
+	fprintf(f,"#define OFFSET_S7  0x%x\n",((int)&pctx->s7) - (int )pctx);
+	fprintf(f,"#define OFFSET_S8  0x%x\n",((int)&pctx->s8) - (int )pctx);
+	fprintf(f,"#define OFFSET_GP  0x%x\n",((int)&pctx->gp) - (int )pctx);
+
+
+	fclose(f);
+
+	return 0;
+}
