xref: /openbmc/linux/arch/sh/include/uapi/asm/ptrace_32.h (revision 2a598d0b)
1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2 #ifndef _UAPI__ASM_SH_PTRACE_32_H
3 #define _UAPI__ASM_SH_PTRACE_32_H
4 
5 /*
6  * GCC defines register number like this:
7  * -----------------------------
8  *	 0 - 15 are integer registers
9  *	17 - 22 are control/special registers
10  *	24 - 39 fp registers
11  *	40 - 47 xd registers
12  *	48 -    fpscr register
13  * -----------------------------
14  *
15  * We follows above, except:
16  *	16 --- program counter (PC)
17  *	22 --- syscall #
18  *	23 --- floating point communication register
19  */
20 #define REG_REG0	 0
21 #define REG_REG15	15
22 
23 #define REG_PC		16
24 
25 #define REG_PR		17
26 #define REG_SR		18
27 #define REG_GBR		19
28 #define REG_MACH	20
29 #define REG_MACL	21
30 
31 #define REG_SYSCALL	22
32 
33 #define REG_FPREG0	23
34 #define REG_FPREG15	38
35 #define REG_XFREG0	39
36 #define REG_XFREG15	54
37 
38 #define REG_FPSCR	55
39 #define REG_FPUL	56
40 
41 /*
42  * This struct defines the way the registers are stored on the
43  * kernel stack during a system call or other kernel entry.
44  */
45 struct pt_regs {
46 	unsigned long regs[16];
47 	unsigned long pc;
48 	unsigned long pr;
49 	unsigned long sr;
50 	unsigned long gbr;
51 	unsigned long mach;
52 	unsigned long macl;
53 	long tra;
54 };
55 
56 /*
57  * This struct defines the way the DSP registers are stored on the
58  * kernel stack during a system call or other kernel entry.
59  */
60 struct pt_dspregs {
61 	unsigned long	a1;
62 	unsigned long	a0g;
63 	unsigned long	a1g;
64 	unsigned long	m0;
65 	unsigned long	m1;
66 	unsigned long	a0;
67 	unsigned long	x0;
68 	unsigned long	x1;
69 	unsigned long	y0;
70 	unsigned long	y1;
71 	unsigned long	dsr;
72 	unsigned long	rs;
73 	unsigned long	re;
74 	unsigned long	mod;
75 };
76 
77 
78 #endif /* _UAPI__ASM_SH_PTRACE_32_H */
79