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