linux/arch/x86/include/asm/ptrace-abi.h
<<
>>
Prefs
   1#ifndef _ASM_X86_PTRACE_ABI_H
   2#define _ASM_X86_PTRACE_ABI_H
   3
   4#ifdef __i386__
   5
   6#define EBX 0
   7#define ECX 1
   8#define EDX 2
   9#define ESI 3
  10#define EDI 4
  11#define EBP 5
  12#define EAX 6
  13#define DS 7
  14#define ES 8
  15#define FS 9
  16#define GS 10
  17#define ORIG_EAX 11
  18#define EIP 12
  19#define CS  13
  20#define EFL 14
  21#define UESP 15
  22#define SS   16
  23#define FRAME_SIZE 17
  24
  25#else /* __i386__ */
  26
  27#if defined(__ASSEMBLY__) || defined(__FRAME_OFFSETS)
  28#define R15 0
  29#define R14 8
  30#define R13 16
  31#define R12 24
  32#define RBP 32
  33#define RBX 40
  34/* arguments: interrupts/non tracing syscalls only save upto here*/
  35#define R11 48
  36#define R10 56
  37#define R9 64
  38#define R8 72
  39#define RAX 80
  40#define RCX 88
  41#define RDX 96
  42#define RSI 104
  43#define RDI 112
  44#define ORIG_RAX 120       /* = ERROR */
  45/* end of arguments */
  46/* cpu exception frame or undefined in case of fast syscall. */
  47#define RIP 128
  48#define CS 136
  49#define EFLAGS 144
  50#define RSP 152
  51#define SS 160
  52#define ARGOFFSET R11
  53#endif /* __ASSEMBLY__ */
  54
  55/* top of stack page */
  56#define FRAME_SIZE 168
  57
  58#endif /* !__i386__ */
  59
  60/* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
  61#define PTRACE_GETREGS            12
  62#define PTRACE_SETREGS            13
  63#define PTRACE_GETFPREGS          14
  64#define PTRACE_SETFPREGS          15
  65#define PTRACE_GETFPXREGS         18
  66#define PTRACE_SETFPXREGS         19
  67
  68#define PTRACE_OLDSETOPTIONS      21
  69
  70/* only useful for access 32bit programs / kernels */
  71#define PTRACE_GET_THREAD_AREA    25
  72#define PTRACE_SET_THREAD_AREA    26
  73
  74#ifdef __x86_64__
  75# define PTRACE_ARCH_PRCTL        30
  76#endif
  77
  78#define PTRACE_SYSEMU             31
  79#define PTRACE_SYSEMU_SINGLESTEP  32
  80
  81#define PTRACE_SINGLEBLOCK      33      /* resume execution until next branch */
  82
  83#ifndef __ASSEMBLY__
  84#include <linux/types.h>
  85
  86/* configuration/status structure used in PTRACE_BTS_CONFIG and
  87   PTRACE_BTS_STATUS commands.
  88*/
  89struct ptrace_bts_config {
  90        /* requested or actual size of BTS buffer in bytes */
  91        __u32 size;
  92        /* bitmask of below flags */
  93        __u32 flags;
  94        /* buffer overflow signal */
  95        __u32 signal;
  96        /* actual size of bts_struct in bytes */
  97        __u32 bts_size;
  98};
  99#endif /* __ASSEMBLY__ */
 100
 101#define PTRACE_BTS_O_TRACE      0x1 /* branch trace */
 102#define PTRACE_BTS_O_SCHED      0x2 /* scheduling events w/ jiffies */
 103#define PTRACE_BTS_O_SIGNAL     0x4 /* send SIG<signal> on buffer overflow
 104                                       instead of wrapping around */
 105#define PTRACE_BTS_O_ALLOC      0x8 /* (re)allocate buffer */
 106
 107#define PTRACE_BTS_CONFIG       40
 108/* Configure branch trace recording.
 109   ADDR points to a struct ptrace_bts_config.
 110   DATA gives the size of that buffer.
 111   A new buffer is allocated, if requested in the flags.
 112   An overflow signal may only be requested for new buffers.
 113   Returns the number of bytes read.
 114*/
 115#define PTRACE_BTS_STATUS       41
 116/* Return the current configuration in a struct ptrace_bts_config
 117   pointed to by ADDR; DATA gives the size of that buffer.
 118   Returns the number of bytes written.
 119*/
 120#define PTRACE_BTS_SIZE         42
 121/* Return the number of available BTS records for draining.
 122   DATA and ADDR are ignored.
 123*/
 124#define PTRACE_BTS_GET          43
 125/* Get a single BTS record.
 126   DATA defines the index into the BTS array, where 0 is the newest
 127   entry, and higher indices refer to older entries.
 128   ADDR is pointing to struct bts_struct (see asm/ds.h).
 129*/
 130#define PTRACE_BTS_CLEAR        44
 131/* Clear the BTS buffer.
 132   DATA and ADDR are ignored.
 133*/
 134#define PTRACE_BTS_DRAIN        45
 135/* Read all available BTS records and clear the buffer.
 136   ADDR points to an array of struct bts_struct.
 137   DATA gives the size of that buffer.
 138   BTS records are read from oldest to newest.
 139   Returns number of BTS records drained.
 140*/
 141
 142#endif /* _ASM_X86_PTRACE_ABI_H */
 143