linux/arch/x86/include/uapi/asm/ptrace-abi.h
<<
>>
Prefs
   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