2 * offset.c: Calculate pt_regs and task_struct indices.
4 * Copyright (C) 1996 David S. Miller
5 * Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 Ralf Baechle
7 #include <linux/types.h>
8 #include <linux/sched.h>
10 #include <linux/interrupt.h>
12 #include <asm/ptrace.h>
13 #include <asm/processor.h>
15 #define text(t) __asm__("\n@@@" t)
16 #define _offset(type, member) ((unsigned long) &(((type *)NULL)->member))
17 #define index(string, ptr, member) \
18 __asm__("\n@@@" string "%0" : : "i" (_offset(ptr, member)/sizeof(long)))
19 #define size(string, size) \
20 __asm__("\n@@@" string "%0" : : "i" (sizeof(size)))
21 #define linefeed text("")
23 void output_ptreg_defines(void)
25 text("/* MIPS pt_regs indices. */");
26 index("#define EF_R0 ", struct pt_regs, regs[0]);
27 index("#define EF_R1 ", struct pt_regs, regs[1]);
28 index("#define EF_R2 ", struct pt_regs, regs[2]);
29 index("#define EF_R3 ", struct pt_regs, regs[3]);
30 index("#define EF_R4 ", struct pt_regs, regs[4]);
31 index("#define EF_R5 ", struct pt_regs, regs[5]);
32 index("#define EF_R6 ", struct pt_regs, regs[6]);
33 index("#define EF_R7 ", struct pt_regs, regs[7]);
34 index("#define EF_R8 ", struct pt_regs, regs[8]);
35 index("#define EF_R9 ", struct pt_regs, regs[9]);
36 index("#define EF_R10 ", struct pt_regs, regs[10]);
37 index("#define EF_R11 ", struct pt_regs, regs[11]);
38 index("#define EF_R12 ", struct pt_regs, regs[12]);
39 index("#define EF_R13 ", struct pt_regs, regs[13]);
40 index("#define EF_R14 ", struct pt_regs, regs[14]);
41 index("#define EF_R15 ", struct pt_regs, regs[15]);
42 index("#define EF_R16 ", struct pt_regs, regs[16]);
43 index("#define EF_R17 ", struct pt_regs, regs[17]);
44 index("#define EF_R18 ", struct pt_regs, regs[18]);
45 index("#define EF_R19 ", struct pt_regs, regs[19]);
46 index("#define EF_R20 ", struct pt_regs, regs[20]);
47 index("#define EF_R21 ", struct pt_regs, regs[21]);
48 index("#define EF_R22 ", struct pt_regs, regs[22]);
49 index("#define EF_R23 ", struct pt_regs, regs[23]);
50 index("#define EF_R24 ", struct pt_regs, regs[24]);
51 index("#define EF_R25 ", struct pt_regs, regs[25]);
52 index("#define EF_R26 ", struct pt_regs, regs[26]);
53 index("#define EF_R27 ", struct pt_regs, regs[27]);
54 index("#define EF_R28 ", struct pt_regs, regs[28]);
55 index("#define EF_R29 ", struct pt_regs, regs[29]);
56 index("#define EF_R30 ", struct pt_regs, regs[30]);
57 index("#define EF_R31 ", struct pt_regs, regs[31]);
59 index("#define EF_LO ", struct pt_regs, lo);
60 index("#define EF_HI ", struct pt_regs, hi);
62 index("#define EF_EPC ", struct pt_regs, cp0_epc);
63 index("#define EF_BVADDR ", struct pt_regs, cp0_badvaddr);
64 index("#define EF_STATUS ", struct pt_regs, cp0_status);
65 index("#define EF_CAUSE ", struct pt_regs, cp0_cause);
67 size("#define EF_SIZE ", struct pt_regs);