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

Linux/Unix编程

开发平台:

Unix_Linux

  1. #ifndef __ASM_SH_PTRACE_H
  2. #define __ASM_SH_PTRACE_H
  3. #include <asm/processor.h>
  4. /*
  5.  * Copyright (C) 1999, 2000  Niibe Yutaka
  6.  *
  7.  */
  8. /*
  9.  * GCC defines register number like this:
  10.  * -----------------------------
  11.  *  0 - 15 are integer registers
  12.  * 17 - 22 are control/special registers
  13.  * 24 - 39 fp registers
  14.  * 40 - 47 xd registers
  15.  * 48 -    fpscr register
  16.  * -----------------------------
  17.  *
  18.  * We follows above, except:
  19.  * 16 --- program counter (PC)
  20.  * 22 --- syscall #
  21.  * 23 --- floating point communication register
  22.  */
  23. #define REG_REG0  0
  24. #define REG_REG15 15
  25. #define REG_PC 16
  26. #define REG_PR 17
  27. #define REG_SR 18
  28. #define REG_GBR       19
  29. #define REG_MACH 20
  30. #define REG_MACL 21
  31. #define REG_SYSCALL 22
  32. #define REG_FPUL 23
  33. #define REG_FPREG0 24
  34. #define REG_FPREG15 39
  35. #define REG_XDREG0 40
  36. #define REG_XDREG14 47
  37. #define REG_FPSCR 48
  38. #define PTRACE_SETOPTIONS         21
  39. /* options set using PTRACE_SETOPTIONS */
  40. #define PTRACE_O_TRACESYSGOOD     0x00000001
  41. /*
  42.  * This struct defines the way the registers are stored on the
  43.  * kernel stack during a system call or other kernel entry.
  44.  */
  45. struct pt_regs {
  46. unsigned long regs[16];
  47. unsigned long pc;
  48. unsigned long pr;
  49. unsigned long sr;
  50. unsigned long gbr;
  51. unsigned long mach;
  52. unsigned long macl;
  53. long syscall_nr;
  54. };
  55. #ifdef __KERNEL__
  56. #define user_mode(regs) (((regs)->sr & 0x40000000)==0)
  57. #define instruction_pointer(regs) ((regs)->pc)
  58. extern void show_regs(struct pt_regs *);
  59. /* User Break Controller */
  60. #if defined(CONFIG_CPU_SUBTYPE_SH7709)
  61. #define UBC_TYPE_SH7729 (cpu_data->type == CPU_SH7729)
  62. #else
  63. #define UBC_TYPE_SH7729 0
  64. #endif
  65. #if defined(__sh3__)
  66. #define UBC_BARA                0xffffffb0
  67. #define UBC_BAMRA               0xffffffb4
  68. #define UBC_BBRA                0xffffffb8
  69. #define UBC_BASRA               0xffffffe4
  70. #define UBC_BARB                0xffffffa0
  71. #define UBC_BAMRB               0xffffffa4
  72. #define UBC_BBRB                0xffffffa8
  73. #define UBC_BASRB               0xffffffe8
  74. #define UBC_BDRB                0xffffff90
  75. #define UBC_BDMRB               0xffffff94
  76. #define UBC_BRCR                0xffffff98
  77. #elif defined(__SH4__)
  78. #define UBC_BARA 0xff200000
  79. #define UBC_BAMRA 0xff200004
  80. #define UBC_BBRA 0xff200008
  81. #define UBC_BASRA 0xff000014
  82. #define UBC_BARB 0xff20000c
  83. #define UBC_BAMRB 0xff200010
  84. #define UBC_BBRB 0xff200014
  85. #define UBC_BASRB 0xff000018
  86. #define UBC_BDRB 0xff200018
  87. #define UBC_BDMRB 0xff20001c
  88. #define UBC_BRCR 0xff200020
  89. #endif
  90. #define BAMR_ASID (1 << 2)
  91. #define BAMR_NONE 0
  92. #define BAMR_10 0x1
  93. #define BAMR_12 0x2
  94. #define BAMR_ALL 0x3
  95. #define BAMR_16 0x8
  96. #define BAMR_20 0x9
  97. #define BBR_INST (1 << 4)
  98. #define BBR_DATA (2 << 4)
  99. #define BBR_READ (1 << 2)
  100. #define BBR_WRITE (2 << 2)
  101. #define BBR_BYTE 0x1
  102. #define BBR_HALF 0x2
  103. #define BBR_LONG 0x3
  104. #define BBR_QUAD (1 << 6) /* SH7750 */
  105. #define BBR_CPU (1 << 6) /* SH7709A,SH7729 */
  106. #define BBR_DMA (2 << 6) /* SH7709A,SH7729 */
  107. #define BRCR_CMFA (1 << 15)
  108. #define BRCR_CMFB (1 << 14)
  109. #define BRCR_PCTE (1 << 11)
  110. #define BRCR_PCBA (1 << 10) /* 1: after execution */
  111. #define BRCR_DBEB (1 << 7)
  112. #define BRCR_PCBB (1 << 6)
  113. #define BRCR_SEQ (1 << 3)
  114. #define BRCR_UBDE (1 << 0)
  115. #endif
  116. #endif /* __ASM_SH_PTRACE_H */