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 long orig_eax; 37 long eip; 38 int xcs; 39 long eflags; 40 long esp; 41 int xss; 42 }; 43 44 /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */ 45 #define PTRACE_GETREGS 12 46 #define PTRACE_SETREGS 13 47 #define PTRACE_GETFPREGS 14 48 #define PTRACE_SETFPREGS 15 49 #define PTRACE_GETFPXREGS 18 50 #define PTRACE_SETFPXREGS 19 51 52 #define PTRACE_SETOPTIONS 21 53 54 /* options set using PTRACE_SETOPTIONS */ 55 #define PTRACE_O_TRACESYSGOOD 0x00000001 56 57 #ifdef __KERNEL__ 58 #define user_mode(regs) ((VM_MASK & (regs)->eflags) || (3 & (regs)->xcs)) 59 #define instruction_pointer(regs) ((regs)->eip) 60 extern void show_regs(struct pt_regs *); 61 #endif 62 63 #endif 64