Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | #ifndef _H8300_PTRACE_H |
2 | #define _H8300_PTRACE_H | |
3 | ||
4 | #ifndef __ASSEMBLY__ | |
5 | ||
6 | #define PT_ER1 0 | |
7 | #define PT_ER2 1 | |
8 | #define PT_ER3 2 | |
9 | #define PT_ER4 3 | |
10 | #define PT_ER5 4 | |
11 | #define PT_ER6 5 | |
12 | #define PT_ER0 6 | |
13 | #define PT_ORIG_ER0 7 | |
14 | #define PT_CCR 8 | |
15 | #define PT_PC 9 | |
16 | #define PT_USP 10 | |
17 | #define PT_EXR 12 | |
18 | ||
19 | /* this struct defines the way the registers are stored on the | |
20 | stack during a system call. */ | |
21 | ||
22 | struct pt_regs { | |
23 | long retpc; | |
24 | long er4; | |
25 | long er5; | |
26 | long er6; | |
27 | long er3; | |
28 | long er2; | |
29 | long er1; | |
30 | long orig_er0; | |
31 | unsigned short ccr; | |
32 | long er0; | |
33 | long vector; | |
34 | #if defined(CONFIG_CPU_H8S) | |
35 | unsigned short exr; | |
36 | #endif | |
37 | unsigned long pc; | |
38 | } __attribute__((aligned(2),packed)); | |
39 | ||
40 | #define PTRACE_GETREGS 12 | |
41 | #define PTRACE_SETREGS 13 | |
42 | ||
43 | #ifdef __KERNEL__ | |
44 | #ifndef PS_S | |
45 | #define PS_S (0x10) | |
46 | #endif | |
47 | ||
48 | #if defined(__H8300H__) | |
49 | #define H8300_REGS_NO 11 | |
50 | #endif | |
51 | #if defined(__H8300S__) | |
52 | #define H8300_REGS_NO 12 | |
53 | #endif | |
54 | ||
55 | /* Find the stack offset for a register, relative to thread.esp0. */ | |
56 | #define PT_REG(reg) ((long)&((struct pt_regs *)0)->reg) | |
57 | ||
58 | #define user_mode(regs) (!((regs)->ccr & PS_S)) | |
59 | #define instruction_pointer(regs) ((regs)->pc) | |
60 | #define profile_pc(regs) instruction_pointer(regs) | |
61 | extern void show_regs(struct pt_regs *); | |
62 | #endif /* __KERNEL__ */ | |
63 | #endif /* __ASSEMBLY__ */ | |
64 | #endif /* _H8300_PTRACE_H */ |