ptrace.h 3.1 KB

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