| /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ | |
| #ifndef _UAPI_ASM_X86_PTRACE_H | |
| #define _UAPI_ASM_X86_PTRACE_H | |
| #include <linux/compiler.h> /* For __user */ | |
| #include <asm/ptrace-abi.h> | |
| #include <asm/processor-flags.h> | |
| #ifndef __ASSEMBLER__ | |
| #ifdef __i386__ | |
| /* this struct defines the way the registers are stored on the | |
| stack during a system call. */ | |
| #ifndef __KERNEL__ | |
| struct pt_regs { | |
| long ebx; | |
| long ecx; | |
| long edx; | |
| long esi; | |
| long edi; | |
| long ebp; | |
| long eax; | |
| int xds; | |
| int xes; | |
| int xfs; | |
| int xgs; | |
| long orig_eax; | |
| long eip; | |
| int xcs; | |
| long eflags; | |
| long esp; | |
| int xss; | |
| }; | |
| #endif /* __KERNEL__ */ | |
| #else /* __i386__ */ | |
| #ifndef __KERNEL__ | |
| struct pt_regs { | |
| /* | |
| * C ABI says these regs are callee-preserved. They aren't saved on kernel entry | |
| * unless syscall needs a complete, fully filled "struct pt_regs". | |
| */ | |
| unsigned long r15; | |
| unsigned long r14; | |
| unsigned long r13; | |
| unsigned long r12; | |
| unsigned long rbp; | |
| unsigned long rbx; | |
| /* These regs are callee-clobbered. Always saved on kernel entry. */ | |
| unsigned long r11; | |
| unsigned long r10; | |
| unsigned long r9; | |
| unsigned long r8; | |
| unsigned long rax; | |
| unsigned long rcx; | |
| unsigned long rdx; | |
| unsigned long rsi; | |
| unsigned long rdi; | |
| /* | |
| * On syscall entry, this is syscall#. On CPU exception, this is error code. | |
| * On hw interrupt, it's IRQ number: | |
| */ | |
| unsigned long orig_rax; | |
| /* Return frame for iretq */ | |
| unsigned long rip; | |
| unsigned long cs; | |
| unsigned long eflags; | |
| unsigned long rsp; | |
| unsigned long ss; | |
| /* top of stack page */ | |
| }; | |
| #endif /* __KERNEL__ */ | |
| #endif /* !__i386__ */ | |
| #endif /* !__ASSEMBLER__ */ | |
| #endif /* _UAPI_ASM_X86_PTRACE_H */ |