xref: /openbmc/linux/arch/m68k/include/asm/ptrace.h (revision d878d6dacee2c862f02da20f7fa3e2c0e8820e71)
1230d1866SGreg Ungerer #ifndef _M68K_PTRACE_H
2230d1866SGreg Ungerer #define _M68K_PTRACE_H
3230d1866SGreg Ungerer 
4230d1866SGreg Ungerer #define PT_D1	   0
5230d1866SGreg Ungerer #define PT_D2	   1
6230d1866SGreg Ungerer #define PT_D3	   2
7230d1866SGreg Ungerer #define PT_D4	   3
8230d1866SGreg Ungerer #define PT_D5	   4
9230d1866SGreg Ungerer #define PT_D6	   5
10230d1866SGreg Ungerer #define PT_D7	   6
11230d1866SGreg Ungerer #define PT_A0	   7
12230d1866SGreg Ungerer #define PT_A1	   8
13230d1866SGreg Ungerer #define PT_A2	   9
14230d1866SGreg Ungerer #define PT_A3	   10
15230d1866SGreg Ungerer #define PT_A4	   11
16230d1866SGreg Ungerer #define PT_A5	   12
17230d1866SGreg Ungerer #define PT_A6	   13
18230d1866SGreg Ungerer #define PT_D0	   14
19230d1866SGreg Ungerer #define PT_USP	   15
20230d1866SGreg Ungerer #define PT_ORIG_D0 16
21230d1866SGreg Ungerer #define PT_SR	   17
22230d1866SGreg Ungerer #define PT_PC	   18
23230d1866SGreg Ungerer 
24230d1866SGreg Ungerer #ifndef __ASSEMBLY__
25230d1866SGreg Ungerer 
26230d1866SGreg Ungerer /* this struct defines the way the registers are stored on the
27230d1866SGreg Ungerer    stack during a system call. */
28230d1866SGreg Ungerer 
29230d1866SGreg Ungerer struct pt_regs {
30230d1866SGreg Ungerer   long     d1;
31230d1866SGreg Ungerer   long     d2;
32230d1866SGreg Ungerer   long     d3;
33230d1866SGreg Ungerer   long     d4;
34230d1866SGreg Ungerer   long     d5;
35230d1866SGreg Ungerer   long     a0;
36230d1866SGreg Ungerer   long     a1;
37230d1866SGreg Ungerer   long     a2;
38230d1866SGreg Ungerer   long     d0;
39230d1866SGreg Ungerer   long     orig_d0;
40230d1866SGreg Ungerer   long     stkadj;
41230d1866SGreg Ungerer #ifdef CONFIG_COLDFIRE
42230d1866SGreg Ungerer   unsigned format :  4; /* frame format specifier */
43230d1866SGreg Ungerer   unsigned vector : 12; /* vector offset */
44230d1866SGreg Ungerer   unsigned short sr;
45230d1866SGreg Ungerer   unsigned long  pc;
4649148020SSam Ravnborg #else
47230d1866SGreg Ungerer   unsigned short sr;
48230d1866SGreg Ungerer   unsigned long  pc;
49230d1866SGreg Ungerer   unsigned format :  4; /* frame format specifier */
50230d1866SGreg Ungerer   unsigned vector : 12; /* vector offset */
5149148020SSam Ravnborg #endif
52230d1866SGreg Ungerer };
53230d1866SGreg Ungerer 
54230d1866SGreg Ungerer /*
55230d1866SGreg Ungerer  * This is the extended stack used by signal handlers and the context
56230d1866SGreg Ungerer  * switcher: it's pushed after the normal "struct pt_regs".
57230d1866SGreg Ungerer  */
58230d1866SGreg Ungerer struct switch_stack {
59230d1866SGreg Ungerer 	unsigned long  d6;
60230d1866SGreg Ungerer 	unsigned long  d7;
61230d1866SGreg Ungerer 	unsigned long  a3;
62230d1866SGreg Ungerer 	unsigned long  a4;
63230d1866SGreg Ungerer 	unsigned long  a5;
64230d1866SGreg Ungerer 	unsigned long  a6;
65230d1866SGreg Ungerer 	unsigned long  retpc;
66230d1866SGreg Ungerer };
67230d1866SGreg Ungerer 
68230d1866SGreg Ungerer /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
69230d1866SGreg Ungerer #define PTRACE_GETREGS            12
70230d1866SGreg Ungerer #define PTRACE_SETREGS            13
71230d1866SGreg Ungerer #define PTRACE_GETFPREGS          14
72230d1866SGreg Ungerer #define PTRACE_SETFPREGS          15
73230d1866SGreg Ungerer 
749674cdc7SMaxim Kuvyrkov #define PTRACE_GET_THREAD_AREA    25
759674cdc7SMaxim Kuvyrkov 
76faa47b46SAndreas Schwab #define PTRACE_SINGLEBLOCK	33	/* resume execution until next branch */
77faa47b46SAndreas Schwab 
78230d1866SGreg Ungerer #ifdef __KERNEL__
79230d1866SGreg Ungerer 
80230d1866SGreg Ungerer #ifndef PS_S
81230d1866SGreg Ungerer #define PS_S  (0x2000)
82230d1866SGreg Ungerer #define PS_M  (0x1000)
83230d1866SGreg Ungerer #endif
84230d1866SGreg Ungerer 
85230d1866SGreg Ungerer #define user_mode(regs) (!((regs)->sr & PS_S))
86230d1866SGreg Ungerer #define instruction_pointer(regs) ((regs)->pc)
87230d1866SGreg Ungerer #define profile_pc(regs) instruction_pointer(regs)
88*d878d6daSAl Viro #define current_pt_regs() \
89*d878d6daSAl Viro 	(struct pt_regs *)((char *)current_thread_info() + THREAD_SIZE) - 1
90faa47b46SAndreas Schwab 
91faa47b46SAndreas Schwab #define arch_has_single_step()	(1)
92faa47b46SAndreas Schwab 
93f60a5572SGreg Ungerer #ifdef CONFIG_MMU
94faa47b46SAndreas Schwab #define arch_has_block_step()	(1)
95faa47b46SAndreas Schwab #endif
96faa47b46SAndreas Schwab 
97230d1866SGreg Ungerer #endif /* __KERNEL__ */
98230d1866SGreg Ungerer #endif /* __ASSEMBLY__ */
99230d1866SGreg Ungerer #endif /* _M68K_PTRACE_H */
100