1 #ifndef _I386_PTRACE_H 2 #define _I386_PTRACE_H 3 4 #define EBX 0 5 #define ECX 1 6 #define EDX 2 7 #define ESI 3 8 #define EDI 4 9 #define EBP 5 10 #define EAX 6 11 #define DS 7 12 #define ES 8 13 #define FS 9 14 #define GS 10 15 #define ORIG_EAX 11 16 #define EIP 12 17 #define CS 13 18 #define EFL 14 19 #define UESP 15 20 #define SS 16 21 #define FRAME_SIZE 17 22 23 /* this struct defines the way the registers are stored on the 24 stack during a system call. */ 25 26 struct pt_regs { 27 long ebx; 28 long ecx; 29 long edx; 30 long esi; 31 long edi; 32 long ebp; 33 long eax; 34 int xds; 35 int xes; 36 int xfs; 37 int xgs; 38 long orig_eax; 39 long eip; 40 int xcs; 41 long eflags; 42 long esp; 43 int xss; 44 } __attribute__ ((packed)); 45 46 47 /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */ 48 #define PTRACE_GETREGS 12 49 #define PTRACE_SETREGS 13 50 #define PTRACE_GETFPREGS 14 51 #define PTRACE_SETFPREGS 15 52 #define PTRACE_GETFPXREGS 18 53 #define PTRACE_SETFPXREGS 19 54 55 #define PTRACE_SETOPTIONS 21 56 57 /* options set using PTRACE_SETOPTIONS */ 58 #define PTRACE_O_TRACESYSGOOD 0x00000001 59 60 #ifdef __KERNEL__ 61 #define user_mode(regs) ((VM_MASK & (regs)->eflags) || (3 & (regs)->xcs)) 62 #define instruction_pointer(regs) ((regs)->eip) 63 extern void show_regs(struct pt_regs *); 64 #endif 65 66 #endif 67