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-i386 / ptrace.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  2.0 KB  |  91 lines

  1. #ifndef _I386_PTRACE_H
  2. #define _I386_PTRACE_H
  3.  
  4. #define EBX 0
  5. #define ECX 1
  6. #define EDX 2
  7. #define ESI 3
  8. #define EDI 4
  9. #define EBP 5
  10. #define EAX 6
  11. #define DS 7
  12. #define ES 8
  13. #define FS 9
  14. #define GS 10
  15. #define ORIG_EAX 11
  16. #define EIP 12
  17. #define CS  13
  18. #define EFL 14
  19. #define UESP 15
  20. #define SS   16
  21. #define FRAME_SIZE 17
  22.  
  23. /* this struct defines the way the registers are stored on the 
  24.    stack during a system call. */
  25.  
  26. struct pt_regs {
  27.     long ebx;
  28.     long ecx;
  29.     long edx;
  30.     long esi;
  31.     long edi;
  32.     long ebp;
  33.     long eax;
  34.     int  xds;
  35.     int  xes;
  36.     long orig_eax;
  37.     long eip;
  38.     int  xcs;
  39.     long eflags;
  40.     long esp;
  41.     int  xss;
  42. };
  43.  
  44. /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
  45. #define PTRACE_GETREGS            12
  46. #define PTRACE_SETREGS            13
  47. #define PTRACE_GETFPREGS          14
  48. #define PTRACE_SETFPREGS          15
  49. #define PTRACE_GETFPXREGS         18
  50. #define PTRACE_SETFPXREGS         19
  51.  
  52. #define PTRACE_OLDSETOPTIONS         21
  53.  
  54. #define PTRACE_GET_THREAD_AREA    25
  55. #define PTRACE_SET_THREAD_AREA    26
  56.  
  57. #define PTRACE_SYSEMU          31
  58. #define PTRACE_SYSEMU_SINGLESTEP  32
  59.  
  60. #ifdef __KERNEL__
  61.  
  62. #include <asm/vm86.h>
  63.  
  64. struct task_struct;
  65. extern void send_sigtrap(struct task_struct *tsk, struct pt_regs *regs, int error_code);
  66.  
  67. /*
  68.  * user_mode_vm(regs) determines whether a register set came from user mode.
  69.  * This is true if V8086 mode was enabled OR if the register set was from
  70.  * protected mode with RPL-3 CS value.  This tricky test checks that with
  71.  * one comparison.  Many places in the kernel can bypass this full check
  72.  * if they have already ruled out V8086 mode, so user_mode(regs) can be used.
  73.  */
  74. static inline int user_mode(struct pt_regs *regs)
  75. {
  76.     return (regs->xcs & 3) != 0;
  77. }
  78. static inline int user_mode_vm(struct pt_regs *regs)
  79. {
  80.     return ((regs->xcs & 3) | (regs->eflags & VM_MASK)) != 0;
  81. }
  82. #define instruction_pointer(regs) ((regs)->eip)
  83. #if defined(CONFIG_SMP) && defined(CONFIG_FRAME_POINTER)
  84. extern unsigned long profile_pc(struct pt_regs *regs);
  85. #else
  86. #define profile_pc(regs) instruction_pointer(regs)
  87. #endif
  88. #endif /* __KERNEL__ */
  89.  
  90. #endif
  91.