ptrace.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:3k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  * This file is subject to the terms and conditions of the GNU General Public
  3.  * License.  See the file "COPYING" in the main directory of this archive
  4.  * for more details.
  5.  *
  6.  * Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000 by Ralf Baechle
  7.  *
  8.  * Machine dependent structs and defines to help the user use
  9.  * the ptrace system call.
  10.  */
  11. #ifndef _ASM_PTRACE_H
  12. #define _ASM_PTRACE_H
  13. #include <asm/isadep.h>
  14. /* 0 - 31 are integer registers, 32 - 63 are fp registers.  */
  15. #define FPR_BASE 32
  16. #define PC 64
  17. #define CAUSE 65
  18. #define BADVADDR 66
  19. #define MMHI 67
  20. #define MMLO 68
  21. #define FPC_CSR 69
  22. #define FPC_EIR 70
  23. #ifndef __ASSEMBLY__
  24. /*
  25.  * This struct defines the way the registers are stored on the stack during a
  26.  * system call/exception. As usual the registers k0/k1 aren't being saved.
  27.  */
  28. struct pt_regs {
  29. /* Pad bytes for argument save space on the stack. */
  30. unsigned long pad0[6];
  31. /* Saved main processor registers. */
  32. unsigned long regs[32];
  33. /* Other saved registers. */
  34. unsigned long lo;
  35. unsigned long hi;
  36. /*
  37.  * saved cp0 registers
  38.  */
  39. unsigned long cp0_epc;
  40. unsigned long cp0_badvaddr;
  41. unsigned long cp0_status;
  42. unsigned long cp0_cause;
  43. };
  44. #define __str2(x) #x
  45. #define __str(x) __str2(x)
  46. #define save_static_function(symbol)                                    
  47. __asm__ (                                                               
  48.         ".globlt" #symbol "nt"                                       
  49.         ".alignt2nt"                                                 
  50.         ".typet" #symbol ", @functionnt"                             
  51.         ".entt" #symbol ", 0n"                                        
  52.         #symbol":nt"                                                  
  53.         ".framet$29, 0, $31nt"                                       
  54.         "swt$16,"__str(PT_R16)"($29)ttt# save_static_functionnt"  
  55.         "swt$17,"__str(PT_R17)"($29)nt"                              
  56.         "swt$18,"__str(PT_R18)"($29)nt"                              
  57.         "swt$19,"__str(PT_R19)"($29)nt"                              
  58.         "swt$20,"__str(PT_R20)"($29)nt"                              
  59.         "swt$21,"__str(PT_R21)"($29)nt"                              
  60.         "swt$22,"__str(PT_R22)"($29)nt"                              
  61.         "swt$23,"__str(PT_R23)"($29)nt"                              
  62.         "swt$30,"__str(PT_R30)"($29)nt"                              
  63.         ".endt" #symbol "nt"                                         
  64.         ".sizet" #symbol",. - " #symbol)
  65. /* Used in declaration of save_static functions.  */
  66. #define static_unused static __attribute__((unused))
  67. #endif /* !__ASSEMBLY__ */
  68. /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
  69. /* #define PTRACE_GETREGS 12 */
  70. /* #define PTRACE_SETREGS 13 */
  71. /* #define PTRACE_GETFPREGS 14 */
  72. /* #define PTRACE_SETFPREGS 15 */
  73. /* #define PTRACE_GETFPXREGS 18 */
  74. /* #define PTRACE_SETFPXREGS 19 */
  75. #define PTRACE_SETOPTIONS 21
  76. /* options set using PTRACE_SETOPTIONS */
  77. #define PTRACE_O_TRACESYSGOOD 0x00000001
  78. #ifdef __ASSEMBLY__
  79. #include <asm/offset.h>
  80. #endif
  81. #ifdef __KERNEL__
  82. #ifndef __ASSEMBLY__
  83. /*
  84.  * Does the process account for user or for system time?
  85.  */
  86. #define user_mode(regs) (((regs)->cp0_status & KU_MASK) == KU_USER)
  87. #define instruction_pointer(regs) ((regs)->cp0_epc)
  88. extern void show_regs(struct pt_regs *);
  89. #endif /* !__ASSEMBLY__ */
  90. #endif
  91. #endif /* _ASM_PTRACE_H */