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