xref: /OK3568_Linux_fs/kernel/arch/x86/include/uapi/asm/ptrace-abi.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2*4882a593Smuzhiyun #ifndef _ASM_X86_PTRACE_ABI_H
3*4882a593Smuzhiyun #define _ASM_X86_PTRACE_ABI_H
4*4882a593Smuzhiyun 
5*4882a593Smuzhiyun #ifdef __i386__
6*4882a593Smuzhiyun 
7*4882a593Smuzhiyun #define EBX 0
8*4882a593Smuzhiyun #define ECX 1
9*4882a593Smuzhiyun #define EDX 2
10*4882a593Smuzhiyun #define ESI 3
11*4882a593Smuzhiyun #define EDI 4
12*4882a593Smuzhiyun #define EBP 5
13*4882a593Smuzhiyun #define EAX 6
14*4882a593Smuzhiyun #define DS 7
15*4882a593Smuzhiyun #define ES 8
16*4882a593Smuzhiyun #define FS 9
17*4882a593Smuzhiyun #define GS 10
18*4882a593Smuzhiyun #define ORIG_EAX 11
19*4882a593Smuzhiyun #define EIP 12
20*4882a593Smuzhiyun #define CS  13
21*4882a593Smuzhiyun #define EFL 14
22*4882a593Smuzhiyun #define UESP 15
23*4882a593Smuzhiyun #define SS   16
24*4882a593Smuzhiyun #define FRAME_SIZE 17
25*4882a593Smuzhiyun 
26*4882a593Smuzhiyun #else /* __i386__ */
27*4882a593Smuzhiyun 
28*4882a593Smuzhiyun #if defined(__ASSEMBLY__) || defined(__FRAME_OFFSETS)
29*4882a593Smuzhiyun /*
30*4882a593Smuzhiyun  * C ABI says these regs are callee-preserved. They aren't saved on kernel entry
31*4882a593Smuzhiyun  * unless syscall needs a complete, fully filled "struct pt_regs".
32*4882a593Smuzhiyun  */
33*4882a593Smuzhiyun #define R15 0
34*4882a593Smuzhiyun #define R14 8
35*4882a593Smuzhiyun #define R13 16
36*4882a593Smuzhiyun #define R12 24
37*4882a593Smuzhiyun #define RBP 32
38*4882a593Smuzhiyun #define RBX 40
39*4882a593Smuzhiyun /* These regs are callee-clobbered. Always saved on kernel entry. */
40*4882a593Smuzhiyun #define R11 48
41*4882a593Smuzhiyun #define R10 56
42*4882a593Smuzhiyun #define R9 64
43*4882a593Smuzhiyun #define R8 72
44*4882a593Smuzhiyun #define RAX 80
45*4882a593Smuzhiyun #define RCX 88
46*4882a593Smuzhiyun #define RDX 96
47*4882a593Smuzhiyun #define RSI 104
48*4882a593Smuzhiyun #define RDI 112
49*4882a593Smuzhiyun /*
50*4882a593Smuzhiyun  * On syscall entry, this is syscall#. On CPU exception, this is error code.
51*4882a593Smuzhiyun  * On hw interrupt, it's IRQ number:
52*4882a593Smuzhiyun  */
53*4882a593Smuzhiyun #define ORIG_RAX 120
54*4882a593Smuzhiyun /* Return frame for iretq */
55*4882a593Smuzhiyun #define RIP 128
56*4882a593Smuzhiyun #define CS 136
57*4882a593Smuzhiyun #define EFLAGS 144
58*4882a593Smuzhiyun #define RSP 152
59*4882a593Smuzhiyun #define SS 160
60*4882a593Smuzhiyun #endif /* __ASSEMBLY__ */
61*4882a593Smuzhiyun 
62*4882a593Smuzhiyun /* top of stack page */
63*4882a593Smuzhiyun #define FRAME_SIZE 168
64*4882a593Smuzhiyun 
65*4882a593Smuzhiyun #endif /* !__i386__ */
66*4882a593Smuzhiyun 
67*4882a593Smuzhiyun /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
68*4882a593Smuzhiyun #define PTRACE_GETREGS            12
69*4882a593Smuzhiyun #define PTRACE_SETREGS            13
70*4882a593Smuzhiyun #define PTRACE_GETFPREGS          14
71*4882a593Smuzhiyun #define PTRACE_SETFPREGS          15
72*4882a593Smuzhiyun #define PTRACE_GETFPXREGS         18
73*4882a593Smuzhiyun #define PTRACE_SETFPXREGS         19
74*4882a593Smuzhiyun 
75*4882a593Smuzhiyun #define PTRACE_OLDSETOPTIONS      21
76*4882a593Smuzhiyun 
77*4882a593Smuzhiyun /* only useful for access 32bit programs / kernels */
78*4882a593Smuzhiyun #define PTRACE_GET_THREAD_AREA    25
79*4882a593Smuzhiyun #define PTRACE_SET_THREAD_AREA    26
80*4882a593Smuzhiyun 
81*4882a593Smuzhiyun #ifdef __x86_64__
82*4882a593Smuzhiyun # define PTRACE_ARCH_PRCTL	  30
83*4882a593Smuzhiyun #endif
84*4882a593Smuzhiyun 
85*4882a593Smuzhiyun #define PTRACE_SYSEMU		  31
86*4882a593Smuzhiyun #define PTRACE_SYSEMU_SINGLESTEP  32
87*4882a593Smuzhiyun 
88*4882a593Smuzhiyun #define PTRACE_SINGLEBLOCK	33	/* resume execution until next branch */
89*4882a593Smuzhiyun 
90*4882a593Smuzhiyun #ifndef __ASSEMBLY__
91*4882a593Smuzhiyun #include <linux/types.h>
92*4882a593Smuzhiyun #endif
93*4882a593Smuzhiyun 
94*4882a593Smuzhiyun #endif /* _ASM_X86_PTRACE_ABI_H */
95