| /* 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 __ASSEMBLY__ |
| |
| #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 /* !__ASSEMBLY__ */ |
| |
| #endif /* _UAPI_ASM_X86_PTRACE_H */ |