]> git.sur5r.net Git - u-boot/blob - include/asm-sparc/ptrace.h
Merge branch 'master' of /home/wd/git/u-boot/master
[u-boot] / include / asm-sparc / ptrace.h
1 /* Contain the Stack frame layout on interrupt. pt_regs.
2  * taken from the SPARC port of Linux (ptrace.h).
3  *
4  * (C) Copyright 2007
5  * Daniel Hellstrom, Gaisler Research, daniel@gaisler.com.
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License as
9  * published by the Free Software Foundation; either version 2 of
10  * the License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
20  * MA 02111-1307 USA
21  *
22  */
23
24 #ifndef __SPARC_PTRACE_H__
25 #define __SPARC_PTRACE_H__
26
27 #include <asm/psr.h>
28
29 /* This struct defines the way the registers are stored on the
30  * stack during a system call and basically all traps.
31  */
32
33 #ifndef __ASSEMBLY__
34
35 struct pt_regs {
36         unsigned long psr;
37         unsigned long pc;
38         unsigned long npc;
39         unsigned long y;
40         unsigned long u_regs[16];       /* globals and ins */
41 };
42
43 #define UREG_G0        0
44 #define UREG_G1        1
45 #define UREG_G2        2
46 #define UREG_G3        3
47 #define UREG_G4        4
48 #define UREG_G5        5
49 #define UREG_G6        6
50 #define UREG_G7        7
51 #define UREG_I0        8
52 #define UREG_I1        9
53 #define UREG_I2        10
54 #define UREG_I3        11
55 #define UREG_I4        12
56 #define UREG_I5        13
57 #define UREG_I6        14
58 #define UREG_I7        15
59 #define UREG_WIM       UREG_G0
60 #define UREG_FADDR     UREG_G0
61 #define UREG_FP        UREG_I6
62 #define UREG_RETPC     UREG_I7
63
64 /* A register window */
65 struct reg_window {
66         unsigned long locals[8];
67         unsigned long ins[8];
68 };
69
70 /* A Sparc stack frame */
71 struct sparc_stackf {
72         unsigned long locals[8];
73         unsigned long ins[6];
74         struct sparc_stackf *fp;
75         unsigned long callers_pc;
76         char *structptr;
77         unsigned long xargs[6];
78         unsigned long xxargs[1];
79 };
80
81 #define TRACEREG_SZ   sizeof(struct pt_regs)
82 #define STACKFRAME_SZ sizeof(struct sparc_stackf)
83
84 #else                           /* __ASSEMBLY__ */
85 /* For assembly code. */
86 #define TRACEREG_SZ       0x50
87 #define STACKFRAME_SZ     0x60
88 #endif
89
90 /*
91  * The asm_offsets.h is a generated file, so we cannot include it.
92  * It may be OK for glibc headers, but it's utterly pointless for C code.
93  * The assembly code using those offsets has to include it explicitly.
94  */
95 /* #include <asm/asm_offsets.h> */
96
97 /* These are for pt_regs. */
98 #define PT_PSR    0x0
99 #define PT_PC     0x4
100 #define PT_NPC    0x8
101 #define PT_Y      0xc
102 #define PT_G0     0x10
103 #define PT_WIM    PT_G0
104 #define PT_G1     0x14
105 #define PT_G2     0x18
106 #define PT_G3     0x1c
107 #define PT_G4     0x20
108 #define PT_G5     0x24
109 #define PT_G6     0x28
110 #define PT_G7     0x2c
111 #define PT_I0     0x30
112 #define PT_I1     0x34
113 #define PT_I2     0x38
114 #define PT_I3     0x3c
115 #define PT_I4     0x40
116 #define PT_I5     0x44
117 #define PT_I6     0x48
118 #define PT_FP     PT_I6
119 #define PT_I7     0x4c
120
121 /* Reg_window offsets */
122 #define RW_L0     0x00
123 #define RW_L1     0x04
124 #define RW_L2     0x08
125 #define RW_L3     0x0c
126 #define RW_L4     0x10
127 #define RW_L5     0x14
128 #define RW_L6     0x18
129 #define RW_L7     0x1c
130 #define RW_I0     0x20
131 #define RW_I1     0x24
132 #define RW_I2     0x28
133 #define RW_I3     0x2c
134 #define RW_I4     0x30
135 #define RW_I5     0x34
136 #define RW_I6     0x38
137 #define RW_I7     0x3c
138
139 /* Stack_frame offsets */
140 #define SF_L0     0x00
141 #define SF_L1     0x04
142 #define SF_L2     0x08
143 #define SF_L3     0x0c
144 #define SF_L4     0x10
145 #define SF_L5     0x14
146 #define SF_L6     0x18
147 #define SF_L7     0x1c
148 #define SF_I0     0x20
149 #define SF_I1     0x24
150 #define SF_I2     0x28
151 #define SF_I3     0x2c
152 #define SF_I4     0x30
153 #define SF_I5     0x34
154 #define SF_FP     0x38
155 #define SF_PC     0x3c
156 #define SF_RETP   0x40
157 #define SF_XARG0  0x44
158 #define SF_XARG1  0x48
159 #define SF_XARG2  0x4c
160 #define SF_XARG3  0x50
161 #define SF_XARG4  0x54
162 #define SF_XARG5  0x58
163 #define SF_XXARG  0x5c
164
165 /* Stuff for the ptrace system call */
166 #define PTRACE_SUNATTACH          10
167 #define PTRACE_SUNDETACH          11
168 #define PTRACE_GETREGS            12
169 #define PTRACE_SETREGS            13
170 #define PTRACE_GETFPREGS          14
171 #define PTRACE_SETFPREGS          15
172 #define PTRACE_READDATA           16
173 #define PTRACE_WRITEDATA          17
174 #define PTRACE_READTEXT           18
175 #define PTRACE_WRITETEXT          19
176 #define PTRACE_GETFPAREGS         20
177 #define PTRACE_SETFPAREGS         21
178
179 #define PTRACE_GETUCODE           29    /* stupid bsd-ism */
180
181 #endif                          /* !(_SPARC_PTRACE_H) */