linux/include/asm-x86_64/ptrace.h
<<
>>
Prefs
   1#ifndef _X86_64_PTRACE_H
   2#define _X86_64_PTRACE_H
   3
   4#if defined(__ASSEMBLY__) || defined(__FRAME_OFFSETS) 
   5#define R15 0
   6#define R14 8
   7#define R13 16
   8#define R12 24
   9#define RBP 32
  10#define RBX 40
  11/* arguments: interrupts/non tracing syscalls only save upto here*/
  12#define R11 48
  13#define R10 56  
  14#define R9 64
  15#define R8 72
  16#define RAX 80
  17#define RCX 88
  18#define RDX 96
  19#define RSI 104
  20#define RDI 112
  21#define ORIG_RAX 120       /* = ERROR */ 
  22/* end of arguments */  
  23/* cpu exception frame or undefined in case of fast syscall. */
  24#define RIP 128
  25#define CS 136
  26#define EFLAGS 144
  27#define RSP 152
  28#define SS 160
  29#define ARGOFFSET R11
  30#endif /* __ASSEMBLY__ */
  31
  32/* top of stack page */ 
  33#define FRAME_SIZE 168
  34
  35#define PTRACE_OLDSETOPTIONS         21
  36
  37#ifndef __ASSEMBLY__ 
  38
  39struct pt_regs {
  40        unsigned long r15;
  41        unsigned long r14;
  42        unsigned long r13;
  43        unsigned long r12;
  44        unsigned long rbp;
  45        unsigned long rbx;
  46/* arguments: non interrupts/non tracing syscalls only save upto here*/
  47        unsigned long r11;
  48        unsigned long r10;      
  49        unsigned long r9;
  50        unsigned long r8;
  51        unsigned long rax;
  52        unsigned long rcx;
  53        unsigned long rdx;
  54        unsigned long rsi;
  55        unsigned long rdi;
  56        unsigned long orig_rax;
  57/* end of arguments */  
  58/* cpu exception frame or undefined */
  59        unsigned long rip;
  60        unsigned long cs;
  61        unsigned long eflags; 
  62        unsigned long rsp; 
  63        unsigned long ss;
  64/* top of stack page */ 
  65};
  66
  67#endif
  68
  69/* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
  70#define PTRACE_GETREGS            12
  71#define PTRACE_SETREGS            13
  72#define PTRACE_GETFPREGS          14
  73#define PTRACE_SETFPREGS          15
  74#define PTRACE_GETFPXREGS         18
  75#define PTRACE_SETFPXREGS         19
  76
  77/* only useful for access 32bit programs */
  78#define PTRACE_GET_THREAD_AREA    25
  79#define PTRACE_SET_THREAD_AREA    26
  80
  81#define PTRACE_ARCH_PRCTL         30    /* arch_prctl for child */
  82
  83#if defined(__KERNEL__) && !defined(__ASSEMBLY__) 
  84#define user_mode(regs) (!!((regs)->cs & 3))
  85#define instruction_pointer(regs) ((regs)->rip)
  86extern unsigned long profile_pc(struct pt_regs *regs);
  87void signal_fault(struct pt_regs *regs, void __user *frame, char *where);
  88
  89enum {
  90        EF_CF   = 0x00000001,
  91        EF_PF   = 0x00000004,
  92        EF_AF   = 0x00000010,
  93        EF_ZF   = 0x00000040,
  94        EF_SF   = 0x00000080,
  95        EF_TF   = 0x00000100,
  96        EF_IE   = 0x00000200,
  97        EF_DF   = 0x00000400,
  98        EF_OF   = 0x00000800,
  99        EF_IOPL = 0x00003000,
 100        EF_IOPL_RING0 = 0x00000000,
 101        EF_IOPL_RING1 = 0x00001000,
 102        EF_IOPL_RING2 = 0x00002000,
 103        EF_NT   = 0x00004000,   /* nested task */
 104        EF_RF   = 0x00010000,   /* resume */
 105        EF_VM   = 0x00020000,   /* virtual mode */
 106        EF_AC   = 0x00040000,   /* alignment */
 107        EF_VIF  = 0x00080000,   /* virtual interrupt */
 108        EF_VIP  = 0x00100000,   /* virtual interrupt pending */
 109        EF_ID   = 0x00200000,   /* id */
 110};
 111
 112#endif
 113
 114#endif
 115
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.