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