ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.bz2
[linux-2.6.git] / arch / mips / kernel / reg.c
1 /*
2  * offset.c: Calculate pt_regs and task_struct indices.
3  *
4  * Copyright (C) 1996 David S. Miller
5  * Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 Ralf Baechle
6  */
7 #include <linux/types.h>
8 #include <linux/sched.h>
9 #include <linux/mm.h>
10 #include <linux/interrupt.h>
11
12 #include <asm/ptrace.h>
13 #include <asm/processor.h>
14
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("")
22
23 void output_ptreg_defines(void)
24 {
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]);
58         linefeed;
59         index("#define EF_LO     ", struct pt_regs, lo);
60         index("#define EF_HI     ", struct pt_regs, hi);
61         linefeed;
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);
66         linefeed;
67         size("#define EF_SIZE   ", struct pt_regs);
68         linefeed;
69 }