ptrace.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. /*
  2. * Copyright 2004-2008 Analog Devices Inc.
  3. *
  4. * Licensed under the GPL-2 or later.
  5. */
  6. #ifndef _BFIN_PTRACE_H
  7. #define _BFIN_PTRACE_H
  8. /*
  9. * GCC defines register number like this:
  10. * -----------------------------
  11. * 0 - 7 are data registers R0-R7
  12. * 8 - 15 are address registers P0-P7
  13. * 16 - 31 dsp registers I/B/L0 -- I/B/L3 & M0--M3
  14. * 32 - 33 A registers A0 & A1
  15. * 34 - status register
  16. * -----------------------------
  17. *
  18. * We follows above, except:
  19. * 32-33 --- Low 32-bit of A0&1
  20. * 34-35 --- High 8-bit of A0&1
  21. */
  22. #ifndef __ASSEMBLY__
  23. /* this struct defines the way the registers are stored on the
  24. stack during a system call. */
  25. struct pt_regs {
  26. long orig_pc;
  27. long ipend;
  28. long seqstat;
  29. long rete;
  30. long retn;
  31. long retx;
  32. long pc; /* PC == RETI */
  33. long rets;
  34. long reserved; /* Used as scratch during system calls */
  35. long astat;
  36. long lb1;
  37. long lb0;
  38. long lt1;
  39. long lt0;
  40. long lc1;
  41. long lc0;
  42. long a1w;
  43. long a1x;
  44. long a0w;
  45. long a0x;
  46. long b3;
  47. long b2;
  48. long b1;
  49. long b0;
  50. long l3;
  51. long l2;
  52. long l1;
  53. long l0;
  54. long m3;
  55. long m2;
  56. long m1;
  57. long m0;
  58. long i3;
  59. long i2;
  60. long i1;
  61. long i0;
  62. long usp;
  63. long fp;
  64. long p5;
  65. long p4;
  66. long p3;
  67. long p2;
  68. long p1;
  69. long p0;
  70. long r7;
  71. long r6;
  72. long r5;
  73. long r4;
  74. long r3;
  75. long r2;
  76. long r1;
  77. long r0;
  78. long orig_r0;
  79. long orig_p0;
  80. long syscfg;
  81. };
  82. /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
  83. #define PTRACE_GETREGS 12
  84. #define PTRACE_SETREGS 13 /* ptrace signal */
  85. #define PTRACE_GETFDPIC 31
  86. #define PTRACE_GETFDPIC_EXEC 0
  87. #define PTRACE_GETFDPIC_INTERP 1
  88. #define PS_S (0x0002)
  89. #ifdef __KERNEL__
  90. /* user_mode returns true if only one bit is set in IPEND, other than the
  91. master interrupt enable. */
  92. #define user_mode(regs) (!(((regs)->ipend & ~0x10) & (((regs)->ipend & ~0x10) - 1)))
  93. #define instruction_pointer(regs) ((regs)->pc)
  94. #define profile_pc(regs) instruction_pointer(regs)
  95. extern void show_regs(struct pt_regs *);
  96. #endif /* __KERNEL__ */
  97. #endif /* __ASSEMBLY__ */
  98. /*
  99. * Offsets used by 'ptrace' system call interface.
  100. */
  101. #define PT_R0 204
  102. #define PT_R1 200
  103. #define PT_R2 196
  104. #define PT_R3 192
  105. #define PT_R4 188
  106. #define PT_R5 184
  107. #define PT_R6 180
  108. #define PT_R7 176
  109. #define PT_P0 172
  110. #define PT_P1 168
  111. #define PT_P2 164
  112. #define PT_P3 160
  113. #define PT_P4 156
  114. #define PT_P5 152
  115. #define PT_FP 148
  116. #define PT_USP 144
  117. #define PT_I0 140
  118. #define PT_I1 136
  119. #define PT_I2 132
  120. #define PT_I3 128
  121. #define PT_M0 124
  122. #define PT_M1 120
  123. #define PT_M2 116
  124. #define PT_M3 112
  125. #define PT_L0 108
  126. #define PT_L1 104
  127. #define PT_L2 100
  128. #define PT_L3 96
  129. #define PT_B0 92
  130. #define PT_B1 88
  131. #define PT_B2 84
  132. #define PT_B3 80
  133. #define PT_A0X 76
  134. #define PT_A0W 72
  135. #define PT_A1X 68
  136. #define PT_A1W 64
  137. #define PT_LC0 60
  138. #define PT_LC1 56
  139. #define PT_LT0 52
  140. #define PT_LT1 48
  141. #define PT_LB0 44
  142. #define PT_LB1 40
  143. #define PT_ASTAT 36
  144. #define PT_RESERVED 32
  145. #define PT_RETS 28
  146. #define PT_PC 24
  147. #define PT_RETX 20
  148. #define PT_RETN 16
  149. #define PT_RETE 12
  150. #define PT_SEQSTAT 8
  151. #define PT_IPEND 4
  152. #define PT_ORIG_R0 208
  153. #define PT_ORIG_P0 212
  154. #define PT_SYSCFG 216
  155. #define PT_TEXT_ADDR 220
  156. #define PT_TEXT_END_ADDR 224
  157. #define PT_DATA_ADDR 228
  158. #define PT_FDPIC_EXEC 232
  159. #define PT_FDPIC_INTERP 236
  160. #endif /* _BFIN_PTRACE_H */