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 74*faa47b46SAndreas Schwab #define PTRACE_SINGLEBLOCK 33 /* resume execution until next branch */ 75*faa47b46SAndreas Schwab 76230d1866SGreg Ungerer #ifdef __KERNEL__ 77230d1866SGreg Ungerer 78230d1866SGreg Ungerer #ifndef PS_S 79230d1866SGreg Ungerer #define PS_S (0x2000) 80230d1866SGreg Ungerer #define PS_M (0x1000) 81230d1866SGreg Ungerer #endif 82230d1866SGreg Ungerer 83230d1866SGreg Ungerer #define user_mode(regs) (!((regs)->sr & PS_S)) 84230d1866SGreg Ungerer #define instruction_pointer(regs) ((regs)->pc) 85230d1866SGreg Ungerer #define profile_pc(regs) instruction_pointer(regs) 86230d1866SGreg Ungerer extern void show_regs(struct pt_regs *); 87*faa47b46SAndreas Schwab 88*faa47b46SAndreas Schwab /* 89*faa47b46SAndreas Schwab * These are defined as per linux/ptrace.h, which see. 90*faa47b46SAndreas Schwab */ 91*faa47b46SAndreas Schwab struct task_struct; 92*faa47b46SAndreas Schwab 93*faa47b46SAndreas Schwab #ifdef CONFIG_MMU 94*faa47b46SAndreas Schwab #define arch_has_single_step() (1) 95*faa47b46SAndreas Schwab extern void user_enable_single_step(struct task_struct *); 96*faa47b46SAndreas Schwab extern void user_disable_single_step(struct task_struct *); 97*faa47b46SAndreas Schwab 98*faa47b46SAndreas Schwab #define arch_has_block_step() (1) 99*faa47b46SAndreas Schwab extern void user_enable_block_step(struct task_struct *); 100*faa47b46SAndreas Schwab #endif 101*faa47b46SAndreas Schwab 102230d1866SGreg Ungerer #endif /* __KERNEL__ */ 103230d1866SGreg Ungerer #endif /* __ASSEMBLY__ */ 104230d1866SGreg Ungerer #endif /* _M68K_PTRACE_H */ 105