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