home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-x86_64 / ptrace.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  3.0 KB  |  121 lines

  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.  
  39. struct 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 user_mode_vm(regs) user_mode(regs)
  86. #define instruction_pointer(regs) ((regs)->rip)
  87. extern unsigned long profile_pc(struct pt_regs *regs);
  88. void signal_fault(struct pt_regs *regs, void __user *frame, char *where);
  89.  
  90. struct task_struct;
  91.  
  92. extern unsigned long
  93. convert_rip_to_linear(struct task_struct *child, struct pt_regs *regs);
  94.  
  95. enum {
  96.         EF_CF   = 0x00000001,
  97.         EF_PF   = 0x00000004,
  98.         EF_AF   = 0x00000010,
  99.         EF_ZF   = 0x00000040,
  100.         EF_SF   = 0x00000080,
  101.         EF_TF   = 0x00000100,
  102.         EF_IE   = 0x00000200,
  103.         EF_DF   = 0x00000400,
  104.         EF_OF   = 0x00000800,
  105.         EF_IOPL = 0x00003000,
  106.         EF_IOPL_RING0 = 0x00000000,
  107.         EF_IOPL_RING1 = 0x00001000,
  108.         EF_IOPL_RING2 = 0x00002000,
  109.         EF_NT   = 0x00004000,   /* nested task */
  110.         EF_RF   = 0x00010000,   /* resume */
  111.         EF_VM   = 0x00020000,   /* virtual mode */
  112.         EF_AC   = 0x00040000,   /* alignment */
  113.         EF_VIF  = 0x00080000,   /* virtual interrupt */
  114.         EF_VIP  = 0x00100000,   /* virtual interrupt pending */
  115.         EF_ID   = 0x00200000,   /* id */
  116. };
  117.  
  118. #endif
  119.  
  120. #endif
  121.