xref: /openbmc/linux/arch/m68k/include/asm/ptrace.h (revision 230d1866a9f9b08c2ab4cb1b60f33fe230ee0a87)
1*230d1866SGreg Ungerer #ifndef _M68K_PTRACE_H
2*230d1866SGreg Ungerer #define _M68K_PTRACE_H
3*230d1866SGreg Ungerer 
4*230d1866SGreg Ungerer #define PT_D1	   0
5*230d1866SGreg Ungerer #define PT_D2	   1
6*230d1866SGreg Ungerer #define PT_D3	   2
7*230d1866SGreg Ungerer #define PT_D4	   3
8*230d1866SGreg Ungerer #define PT_D5	   4
9*230d1866SGreg Ungerer #define PT_D6	   5
10*230d1866SGreg Ungerer #define PT_D7	   6
11*230d1866SGreg Ungerer #define PT_A0	   7
12*230d1866SGreg Ungerer #define PT_A1	   8
13*230d1866SGreg Ungerer #define PT_A2	   9
14*230d1866SGreg Ungerer #define PT_A3	   10
15*230d1866SGreg Ungerer #define PT_A4	   11
16*230d1866SGreg Ungerer #define PT_A5	   12
17*230d1866SGreg Ungerer #define PT_A6	   13
18*230d1866SGreg Ungerer #define PT_D0	   14
19*230d1866SGreg Ungerer #define PT_USP	   15
20*230d1866SGreg Ungerer #define PT_ORIG_D0 16
21*230d1866SGreg Ungerer #define PT_SR	   17
22*230d1866SGreg Ungerer #define PT_PC	   18
23*230d1866SGreg Ungerer 
24*230d1866SGreg Ungerer #ifndef __ASSEMBLY__
25*230d1866SGreg Ungerer 
26*230d1866SGreg Ungerer /* this struct defines the way the registers are stored on the
27*230d1866SGreg Ungerer    stack during a system call. */
28*230d1866SGreg Ungerer 
29*230d1866SGreg Ungerer struct pt_regs {
30*230d1866SGreg Ungerer   long     d1;
31*230d1866SGreg Ungerer   long     d2;
32*230d1866SGreg Ungerer   long     d3;
33*230d1866SGreg Ungerer   long     d4;
34*230d1866SGreg Ungerer   long     d5;
35*230d1866SGreg Ungerer   long     a0;
36*230d1866SGreg Ungerer   long     a1;
37*230d1866SGreg Ungerer   long     a2;
38*230d1866SGreg Ungerer   long     d0;
39*230d1866SGreg Ungerer   long     orig_d0;
40*230d1866SGreg Ungerer   long     stkadj;
41*230d1866SGreg Ungerer #ifdef CONFIG_COLDFIRE
42*230d1866SGreg Ungerer   unsigned format :  4; /* frame format specifier */
43*230d1866SGreg Ungerer   unsigned vector : 12; /* vector offset */
44*230d1866SGreg Ungerer   unsigned short sr;
45*230d1866SGreg Ungerer   unsigned long  pc;
4649148020SSam Ravnborg #else
47*230d1866SGreg Ungerer   unsigned short sr;
48*230d1866SGreg Ungerer   unsigned long  pc;
49*230d1866SGreg Ungerer   unsigned format :  4; /* frame format specifier */
50*230d1866SGreg Ungerer   unsigned vector : 12; /* vector offset */
5149148020SSam Ravnborg #endif
52*230d1866SGreg Ungerer };
53*230d1866SGreg Ungerer 
54*230d1866SGreg Ungerer /*
55*230d1866SGreg Ungerer  * This is the extended stack used by signal handlers and the context
56*230d1866SGreg Ungerer  * switcher: it's pushed after the normal "struct pt_regs".
57*230d1866SGreg Ungerer  */
58*230d1866SGreg Ungerer struct switch_stack {
59*230d1866SGreg Ungerer 	unsigned long  d6;
60*230d1866SGreg Ungerer 	unsigned long  d7;
61*230d1866SGreg Ungerer 	unsigned long  a3;
62*230d1866SGreg Ungerer 	unsigned long  a4;
63*230d1866SGreg Ungerer 	unsigned long  a5;
64*230d1866SGreg Ungerer 	unsigned long  a6;
65*230d1866SGreg Ungerer 	unsigned long  retpc;
66*230d1866SGreg Ungerer };
67*230d1866SGreg Ungerer 
68*230d1866SGreg Ungerer /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
69*230d1866SGreg Ungerer #define PTRACE_GETREGS            12
70*230d1866SGreg Ungerer #define PTRACE_SETREGS            13
71*230d1866SGreg Ungerer #define PTRACE_GETFPREGS          14
72*230d1866SGreg Ungerer #define PTRACE_SETFPREGS          15
73*230d1866SGreg Ungerer 
74*230d1866SGreg Ungerer #ifdef __KERNEL__
75*230d1866SGreg Ungerer 
76*230d1866SGreg Ungerer #ifndef PS_S
77*230d1866SGreg Ungerer #define PS_S  (0x2000)
78*230d1866SGreg Ungerer #define PS_M  (0x1000)
79*230d1866SGreg Ungerer #endif
80*230d1866SGreg Ungerer 
81*230d1866SGreg Ungerer #define user_mode(regs) (!((regs)->sr & PS_S))
82*230d1866SGreg Ungerer #define instruction_pointer(regs) ((regs)->pc)
83*230d1866SGreg Ungerer #define profile_pc(regs) instruction_pointer(regs)
84*230d1866SGreg Ungerer extern void show_regs(struct pt_regs *);
85*230d1866SGreg Ungerer #endif /* __KERNEL__ */
86*230d1866SGreg Ungerer #endif /* __ASSEMBLY__ */
87*230d1866SGreg Ungerer #endif /* _M68K_PTRACE_H */
88