Home | History | Annotate | Download | only in asm
      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