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 arch_has_single_step()	(1)
59 
60 #define user_mode(regs) (!((regs)->ccr & PS_S))
61 #define instruction_pointer(regs) ((regs)->pc)
62 #define profile_pc(regs) instruction_pointer(regs)
63 #endif /* __KERNEL__ */
64 #endif /* __ASSEMBLY__ */
65 #endif /* _H8300_PTRACE_H */
66