OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [include/] [asm-sparc64/] [ptrace.h] - Blame information for rev 1774

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1276 phoenix
/* $Id: ptrace.h,v 1.1.1.1 2004-04-15 03:00:54 phoenix Exp $ */
2
#ifndef _SPARC64_PTRACE_H
3
#define _SPARC64_PTRACE_H
4
 
5
#include <asm/pstate.h>
6
 
7
/* This struct defines the way the registers are stored on the
8
 * stack during a system call and basically all traps.
9
 */
10
 
11
#ifndef __ASSEMBLY__
12
 
13
struct pt_regs {
14
        unsigned long u_regs[16]; /* globals and ins */
15
        unsigned long tstate;
16
        unsigned long tpc;
17
        unsigned long tnpc;
18
        unsigned int y;
19
        unsigned int fprs;
20
};
21
 
22
struct pt_regs32 {
23
        unsigned int psr;
24
        unsigned int pc;
25
        unsigned int npc;
26
        unsigned int y;
27
        unsigned int u_regs[16]; /* globals and ins */
28
};
29
 
30
#define UREG_G0        0
31
#define UREG_G1        1
32
#define UREG_G2        2
33
#define UREG_G3        3
34
#define UREG_G4        4
35
#define UREG_G5        5
36
#define UREG_G6        6
37
#define UREG_G7        7
38
#define UREG_I0        8
39
#define UREG_I1        9
40
#define UREG_I2        10
41
#define UREG_I3        11
42
#define UREG_I4        12
43
#define UREG_I5        13
44
#define UREG_I6        14
45
#define UREG_I7        15
46
#define UREG_FP        UREG_I6
47
#define UREG_RETPC     UREG_I7
48
 
49
/* A V9 register window */
50
struct reg_window {
51
        unsigned long locals[8];
52
        unsigned long ins[8];
53
};
54
 
55
/* A 32-bit register window. */
56
struct reg_window32 {
57
        unsigned int locals[8];
58
        unsigned int ins[8];
59
};
60
 
61
/* A V9 Sparc stack frame */
62
struct sparc_stackf {
63
        unsigned long locals[8];
64
        unsigned long ins[6];
65
        struct sparc_stackf *fp;
66
        unsigned long callers_pc;
67
        char *structptr;
68
        unsigned long xargs[6];
69
        unsigned long xxargs[1];
70
};
71
 
72
/* A 32-bit Sparc stack frame */
73
struct sparc_stackf32 {
74
        unsigned int locals[8];
75
        unsigned int ins[6];
76
        unsigned int fp;
77
        unsigned int callers_pc;
78
        unsigned int structptr;
79
        unsigned int xargs[6];
80
        unsigned int xxargs[1];
81
};
82
 
83
struct sparc_trapf {
84
        unsigned long locals[8];
85
        unsigned long ins[8];
86
        unsigned long _unused;
87
        struct pt_regs *regs;
88
};
89
 
90
#define TRACEREG_SZ     sizeof(struct pt_regs)
91
#define STACKFRAME_SZ   sizeof(struct sparc_stackf)
92
 
93
#define TRACEREG32_SZ   sizeof(struct pt_regs32)
94
#define STACKFRAME32_SZ sizeof(struct sparc_stackf32)
95
 
96
#ifdef __KERNEL__
97
#define user_mode(regs) (!((regs)->tstate & TSTATE_PRIV))
98
#define instruction_pointer(regs) ((regs)->tpc)
99
extern void show_regs(struct pt_regs *);
100
#define force_successful_syscall_return() \
101
do { \
102
        current->thread.flags |= SPARC_FLAG_SYS_SUCCESS; \
103
} while (0)
104
#endif
105
 
106
#else /* __ASSEMBLY__ */
107
/* For assembly code. */
108
#define TRACEREG_SZ             0xa0
109
#define STACKFRAME_SZ           0xc0
110
 
111
#define TRACEREG32_SZ           0x50
112
#define STACKFRAME32_SZ         0x60
113
 
114
#include <asm/asm_offsets.h>
115
#endif
116
 
117
#ifdef __KERNEL__
118
#define STACK_BIAS              2047
119
#endif
120
 
121
/* These are for pt_regs. */
122
#define PT_V9_G0     0x00
123
#define PT_V9_G1     0x08
124
#define PT_V9_G2     0x10
125
#define PT_V9_G3     0x18
126
#define PT_V9_G4     0x20
127
#define PT_V9_G5     0x28
128
#define PT_V9_G6     0x30
129
#define PT_V9_G7     0x38
130
#define PT_V9_I0     0x40
131
#define PT_V9_I1     0x48
132
#define PT_V9_I2     0x50
133
#define PT_V9_I3     0x58
134
#define PT_V9_I4     0x60
135
#define PT_V9_I5     0x68
136
#define PT_V9_I6     0x70
137
#define PT_V9_FP     PT_V9_I6
138
#define PT_V9_I7     0x78
139
#define PT_V9_TSTATE 0x80
140
#define PT_V9_TPC    0x88
141
#define PT_V9_TNPC   0x90
142
#define PT_V9_Y      0x98
143
#define PT_V9_FPRS   0x9c
144
#define PT_TSTATE       PT_V9_TSTATE
145
#define PT_TPC          PT_V9_TPC
146
#define PT_TNPC         PT_V9_TNPC
147
 
148
/* These for pt_regs32. */
149
#define PT_PSR    0x0
150
#define PT_PC     0x4
151
#define PT_NPC    0x8
152
#define PT_Y      0xc
153
#define PT_G0     0x10
154
#define PT_WIM    PT_G0
155
#define PT_G1     0x14
156
#define PT_G2     0x18
157
#define PT_G3     0x1c
158
#define PT_G4     0x20
159
#define PT_G5     0x24
160
#define PT_G6     0x28
161
#define PT_G7     0x2c
162
#define PT_I0     0x30
163
#define PT_I1     0x34
164
#define PT_I2     0x38
165
#define PT_I3     0x3c
166
#define PT_I4     0x40
167
#define PT_I5     0x44
168
#define PT_I6     0x48
169
#define PT_FP     PT_I6
170
#define PT_I7     0x4c
171
 
172
/* Reg_window offsets */
173
#define RW_V9_L0     0x00
174
#define RW_V9_L1     0x08
175
#define RW_V9_L2     0x10
176
#define RW_V9_L3     0x18
177
#define RW_V9_L4     0x20
178
#define RW_V9_L5     0x28
179
#define RW_V9_L6     0x30
180
#define RW_V9_L7     0x38
181
#define RW_V9_I0     0x40
182
#define RW_V9_I1     0x48
183
#define RW_V9_I2     0x50
184
#define RW_V9_I3     0x58
185
#define RW_V9_I4     0x60
186
#define RW_V9_I5     0x68
187
#define RW_V9_I6     0x70
188
#define RW_V9_I7     0x78
189
 
190
#define RW_L0     0x00
191
#define RW_L1     0x04
192
#define RW_L2     0x08
193
#define RW_L3     0x0c
194
#define RW_L4     0x10
195
#define RW_L5     0x14
196
#define RW_L6     0x18
197
#define RW_L7     0x1c
198
#define RW_I0     0x20
199
#define RW_I1     0x24
200
#define RW_I2     0x28
201
#define RW_I3     0x2c
202
#define RW_I4     0x30
203
#define RW_I5     0x34
204
#define RW_I6     0x38
205
#define RW_I7     0x3c
206
 
207
/* Stack_frame offsets */
208
#define SF_V9_L0     0x00
209
#define SF_V9_L1     0x08
210
#define SF_V9_L2     0x10
211
#define SF_V9_L3     0x18
212
#define SF_V9_L4     0x20
213
#define SF_V9_L5     0x28
214
#define SF_V9_L6     0x30
215
#define SF_V9_L7     0x38
216
#define SF_V9_I0     0x40
217
#define SF_V9_I1     0x48
218
#define SF_V9_I2     0x50
219
#define SF_V9_I3     0x58
220
#define SF_V9_I4     0x60
221
#define SF_V9_I5     0x68
222
#define SF_V9_FP     0x70
223
#define SF_V9_PC     0x78
224
#define SF_V9_RETP   0x80
225
#define SF_V9_XARG0  0x88
226
#define SF_V9_XARG1  0x90
227
#define SF_V9_XARG2  0x98
228
#define SF_V9_XARG3  0xa0
229
#define SF_V9_XARG4  0xa8
230
#define SF_V9_XARG5  0xb0
231
#define SF_V9_XXARG  0xb8
232
 
233
#define SF_L0     0x00
234
#define SF_L1     0x04
235
#define SF_L2     0x08
236
#define SF_L3     0x0c
237
#define SF_L4     0x10
238
#define SF_L5     0x14
239
#define SF_L6     0x18
240
#define SF_L7     0x1c
241
#define SF_I0     0x20
242
#define SF_I1     0x24
243
#define SF_I2     0x28
244
#define SF_I3     0x2c
245
#define SF_I4     0x30
246
#define SF_I5     0x34
247
#define SF_FP     0x38
248
#define SF_PC     0x3c
249
#define SF_RETP   0x40
250
#define SF_XARG0  0x44
251
#define SF_XARG1  0x48
252
#define SF_XARG2  0x4c
253
#define SF_XARG3  0x50
254
#define SF_XARG4  0x54
255
#define SF_XARG5  0x58
256
#define SF_XXARG  0x5c
257
 
258
/* Stuff for the ptrace system call */
259
#define PTRACE_SUNATTACH          10
260
#define PTRACE_SUNDETACH          11
261
#define PTRACE_GETREGS            12
262
#define PTRACE_SETREGS            13
263
#define PTRACE_GETFPREGS          14
264
#define PTRACE_SETFPREGS          15
265
#define PTRACE_READDATA           16
266
#define PTRACE_WRITEDATA          17
267
#define PTRACE_READTEXT           18
268
#define PTRACE_WRITETEXT          19
269
#define PTRACE_GETFPAREGS         20
270
#define PTRACE_SETFPAREGS         21
271
 
272
/* There are for debugging 64-bit processes, either from a 32 or 64 bit
273
 * parent.  Thus their compliments are for debugging 32-bit processes only.
274
 */
275
 
276
#define PTRACE_GETREGS64          22
277
#define PTRACE_SETREGS64          23
278
/* PTRACE_SYSCALL is 24 */
279
#define PTRACE_GETFPREGS64        25
280
#define PTRACE_SETFPREGS64        26
281
 
282
#define PTRACE_GETUCODE           29  /* stupid bsd-ism */
283
 
284
/* These are for 32-bit processes debugging 64-bit ones.
285
 * Here addr and addr2 are passed in %g2 and %g3 respectively.
286
 */
287
#define PTRACE_PEEKTEXT64         (30 + PTRACE_PEEKTEXT)
288
#define PTRACE_POKETEXT64         (30 + PTRACE_POKETEXT)
289
#define PTRACE_PEEKDATA64         (30 + PTRACE_PEEKDATA)
290
#define PTRACE_POKEDATA64         (30 + PTRACE_POKEDATA)
291
#define PTRACE_READDATA64         (30 + PTRACE_READDATA)
292
#define PTRACE_WRITEDATA64        (30 + PTRACE_WRITEDATA)
293
#define PTRACE_READTEXT64         (30 + PTRACE_READTEXT)
294
#define PTRACE_WRITETEXT64        (30 + PTRACE_WRITETEXT)
295
 
296
#endif /* !(_SPARC64_PTRACE_H) */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.