xref: /linux/arch/x86/include/uapi/asm/ptrace.h (revision b85d45947951d23cb22d90caecf4c1eb81342c96)
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