]>
Commit | Line | Data |
---|---|---|
da28c597 PM |
1 | #ifndef __ASM_SH_PTRACE_32_H |
2 | #define __ASM_SH_PTRACE_32_H | |
3 | ||
4 | /* | |
5 | * GCC defines register number like this: | |
6 | * ----------------------------- | |
7 | * 0 - 15 are integer registers | |
8 | * 17 - 22 are control/special registers | |
9 | * 24 - 39 fp registers | |
10 | * 40 - 47 xd registers | |
11 | * 48 - fpscr register | |
12 | * ----------------------------- | |
13 | * | |
14 | * We follows above, except: | |
15 | * 16 --- program counter (PC) | |
16 | * 22 --- syscall # | |
17 | * 23 --- floating point communication register | |
18 | */ | |
19 | #define REG_REG0 0 | |
20 | #define REG_REG15 15 | |
21 | ||
22 | #define REG_PC 16 | |
23 | ||
24 | #define REG_PR 17 | |
25 | #define REG_SR 18 | |
26 | #define REG_GBR 19 | |
27 | #define REG_MACH 20 | |
28 | #define REG_MACL 21 | |
29 | ||
30 | #define REG_SYSCALL 22 | |
31 | ||
32 | #define REG_FPREG0 23 | |
33 | #define REG_FPREG15 38 | |
34 | #define REG_XFREG0 39 | |
35 | #define REG_XFREG15 54 | |
36 | ||
37 | #define REG_FPSCR 55 | |
38 | #define REG_FPUL 56 | |
39 | ||
40 | /* | |
41 | * This struct defines the way the registers are stored on the | |
42 | * kernel stack during a system call or other kernel entry. | |
43 | */ | |
44 | struct pt_regs { | |
45 | unsigned long regs[16]; | |
46 | unsigned long pc; | |
47 | unsigned long pr; | |
48 | unsigned long sr; | |
49 | unsigned long gbr; | |
50 | unsigned long mach; | |
51 | unsigned long macl; | |
52 | long tra; | |
53 | }; | |
54 | ||
55 | /* | |
56 | * This struct defines the way the DSP registers are stored on the | |
57 | * kernel stack during a system call or other kernel entry. | |
58 | */ | |
59 | struct pt_dspregs { | |
60 | unsigned long a1; | |
61 | unsigned long a0g; | |
62 | unsigned long a1g; | |
63 | unsigned long m0; | |
64 | unsigned long m1; | |
65 | unsigned long a0; | |
66 | unsigned long x0; | |
67 | unsigned long x1; | |
68 | unsigned long y0; | |
69 | unsigned long y1; | |
70 | unsigned long dsr; | |
71 | unsigned long rs; | |
72 | unsigned long re; | |
73 | unsigned long mod; | |
74 | }; | |
75 | ||
76 | #ifdef __KERNEL__ | |
77 | ||
78 | #define MAX_REG_OFFSET offsetof(struct pt_regs, tra) | |
d7e7528b EP |
79 | static inline long regs_return_value(struct pt_regs *regs) |
80 | { | |
81 | return regs->regs[0]; | |
82 | } | |
da28c597 PM |
83 | |
84 | #endif /* __KERNEL__ */ | |
85 | ||
86 | #endif /* __ASM_SH_PTRACE_32_H */ |