1 #ifndef _UAPI_ASM_X86_PTRACE_H 2 #define _UAPI_ASM_X86_PTRACE_H 3 4 #include <linux/compiler.h> /* For __user */ 5 #include <asm/ptrace-abi.h> 6 #include <asm/processor-flags.h> 7 8 9 #ifndef __ASSEMBLY__ 10 11 #ifdef __i386__ 12 /* this struct defines the way the registers are stored on the 13 stack during a system call. */ 14 15 #ifndef __KERNEL__ 16 17 struct pt_regs { 18 long ebx; 19 long ecx; 20 long edx; 21 long esi; 22 long edi; 23 long ebp; 24 long eax; 25 int xds; 26 int xes; 27 int xfs; 28 int xgs; 29 long orig_eax; 30 long eip; 31 int xcs; 32 long eflags; 33 long esp; 34 int xss; 35 }; 36 37 #endif /* __KERNEL__ */ 38 39 #else /* __i386__ */ 40 41 #ifndef __KERNEL__ 42 43 struct pt_regs { 44 /* 45 * C ABI says these regs are callee-preserved. They aren't saved on kernel entry 46 * unless syscall needs a complete, fully filled "struct pt_regs". 47 */ 48 unsigned long r15; 49 unsigned long r14; 50 unsigned long r13; 51 unsigned long r12; 52 unsigned long rbp; 53 unsigned long rbx; 54 /* These regs are callee-clobbered. Always saved on kernel entry. */ 55 unsigned long r11; 56 unsigned long r10; 57 unsigned long r9; 58 unsigned long r8; 59 unsigned long rax; 60 unsigned long rcx; 61 unsigned long rdx; 62 unsigned long rsi; 63 unsigned long rdi; 64 /* 65 * On syscall entry, this is syscall#. On CPU exception, this is error code. 66 * On hw interrupt, it's IRQ number: 67 */ 68 unsigned long orig_rax; 69 /* Return frame for iretq */ 70 unsigned long rip; 71 unsigned long cs; 72 unsigned long eflags; 73 unsigned long rsp; 74 unsigned long ss; 75 /* top of stack page */ 76 }; 77 78 #endif /* __KERNEL__ */ 79 #endif /* !__i386__ */ 80 81 82 83 #endif /* !__ASSEMBLY__ */ 84 85 #endif /* _UAPI_ASM_X86_PTRACE_H */ 86