ptrace.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. #ifndef _M68K_PTRACE_H
  2. #define _M68K_PTRACE_H
  3. /*
  4. * This struct defines the way the registers are stored on the
  5. * kernel stack during a system call or other kernel entry.
  6. *
  7. * this should only contain volatile regs
  8. * since we can keep non-volatile in the thread_struct
  9. * should set this up when only volatiles are saved
  10. * by intr code.
  11. *
  12. * Since this is going on the stack, *CARE MUST BE TAKEN* to insure
  13. * that the overall structure is a multiple of 16 bytes in length.
  14. *
  15. * Note that the offsets of the fields in this struct correspond with
  16. * the PT_* values below. This simplifies arch/ppc/kernel/ptrace.c.
  17. */
  18. #include <linux/config.h>
  19. #ifndef __ASSEMBLY__
  20. #ifdef CONFIG_M68K64BRIDGE
  21. #define M68K_REG unsigned long /*long*/
  22. #else
  23. #define M68K_REG unsigned long
  24. #endif
  25. struct pt_regs {
  26. M68K_REG gpr[32];
  27. M68K_REG nip;
  28. M68K_REG msr;
  29. M68K_REG orig_gpr3; /* Used for restarting system calls */
  30. M68K_REG ctr;
  31. M68K_REG link;
  32. M68K_REG xer;
  33. M68K_REG ccr;
  34. M68K_REG mq; /* 601 only (not used at present) */
  35. /* Used on APUS to hold IPL value. */
  36. M68K_REG trap; /* Reason for being here */
  37. M68K_REG dar; /* Fault registers */
  38. M68K_REG dsisr;
  39. M68K_REG result; /* Result of a system call */
  40. };
  41. #endif
  42. #define STACK_FRAME_OVERHEAD 16 /* size of minimum stack frame */
  43. /* Size of stack frame allocated when calling signal handler. */
  44. #define __SIGNAL_FRAMESIZE 64
  45. #define instruction_pointer(regs) ((regs)->nip)
  46. #define user_mode(regs) (((regs)->msr & MSR_PR) != 0)
  47. /*
  48. * Offsets used by 'ptrace' system call interface.
  49. * These can't be changed without breaking binary compatibility
  50. * with MkLinux, etc.
  51. */
  52. #define PT_R0 0
  53. #define PT_R1 1
  54. #define PT_R2 2
  55. #define PT_R3 3
  56. #define PT_R4 4
  57. #define PT_R5 5
  58. #define PT_R6 6
  59. #define PT_R7 7
  60. #define PT_R8 8
  61. #define PT_R9 9
  62. #define PT_R10 10
  63. #define PT_R11 11
  64. #define PT_R12 12
  65. #define PT_R13 13
  66. #define PT_R14 14
  67. #define PT_R15 15
  68. #define PT_R16 16
  69. #define PT_R17 17
  70. #define PT_R18 18
  71. #define PT_R19 19
  72. #define PT_R20 20
  73. #define PT_R21 21
  74. #define PT_R22 22
  75. #define PT_R23 23
  76. #define PT_R24 24
  77. #define PT_R25 25
  78. #define PT_R26 26
  79. #define PT_R27 27
  80. #define PT_R28 28
  81. #define PT_R29 29
  82. #define PT_R30 30
  83. #define PT_R31 31
  84. #define PT_NIP 32
  85. #define PT_MSR 33
  86. #ifdef __KERNEL__
  87. #define PT_ORIG_R3 34
  88. #endif
  89. #define PT_CTR 35
  90. #define PT_LNK 36
  91. #define PT_XER 37
  92. #define PT_CCR 38
  93. #define PT_MQ 39
  94. #define PT_FPR0 48 /* each FP reg occupies 2 slots in this space */
  95. #define PT_FPR31 (PT_FPR0 + 2*31)
  96. #define PT_FPSCR (PT_FPR0 + 2*32 + 1)
  97. #endif