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
22struct 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)
61extern void show_regs(struct pt_regs *);
62#endif /* __KERNEL__ */
63#endif /* __ASSEMBLY__ */
64#endif /* _H8300_PTRACE_H */
65