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 26struct 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) 60extern void show_regs(struct pt_regs *); 61#endif 62 63#endif 64