ptrace.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. /* written by Philipp Rumpf, Copyright (C) 1999 SuSE GmbH Nuernberg
  2. ** Copyright (C) 2000 Grant Grundler, Hewlett-Packard
  3. */
  4. #ifndef _UAPI_PARISC_PTRACE_H
  5. #define _UAPI_PARISC_PTRACE_H
  6. #include <linux/types.h>
  7. /* This struct defines the way the registers are stored on the
  8. * stack during a system call.
  9. *
  10. * N.B. gdb/strace care about the size and offsets within this
  11. * structure. If you change things, you may break object compatibility
  12. * for those applications.
  13. *
  14. * Please do NOT use this structure for future programs, but use
  15. * user_regs_struct (see below) instead.
  16. *
  17. * It can be accessed through PTRACE_PEEKUSR/PTRACE_POKEUSR only.
  18. */
  19. struct pt_regs {
  20. unsigned long gr[32]; /* PSW is in gr[0] */
  21. __u64 fr[32];
  22. unsigned long sr[ 8];
  23. unsigned long iasq[2];
  24. unsigned long iaoq[2];
  25. unsigned long cr27;
  26. unsigned long pad0; /* available for other uses */
  27. unsigned long orig_r28;
  28. unsigned long ksp;
  29. unsigned long kpc;
  30. unsigned long sar; /* CR11 */
  31. unsigned long iir; /* CR19 */
  32. unsigned long isr; /* CR20 */
  33. unsigned long ior; /* CR21 */
  34. unsigned long ipsw; /* CR22 */
  35. };
  36. /**
  37. * struct user_regs_struct - User general purpose registers
  38. *
  39. * This is the user-visible general purpose register state structure
  40. * which is used to define the elf_gregset_t.
  41. *
  42. * It can be accessed through PTRACE_GETREGSET with NT_PRSTATUS
  43. * and through PTRACE_GETREGS.
  44. */
  45. struct user_regs_struct {
  46. unsigned long gr[32]; /* PSW is in gr[0] */
  47. unsigned long sr[8];
  48. unsigned long iaoq[2];
  49. unsigned long iasq[2];
  50. unsigned long sar; /* CR11 */
  51. unsigned long iir; /* CR19 */
  52. unsigned long isr; /* CR20 */
  53. unsigned long ior; /* CR21 */
  54. unsigned long ipsw; /* CR22 */
  55. unsigned long cr0;
  56. unsigned long cr24, cr25, cr26, cr27, cr28, cr29, cr30, cr31;
  57. unsigned long cr8, cr9, cr12, cr13, cr10, cr15;
  58. unsigned long _pad[80-64]; /* pad to ELF_NGREG (80) */
  59. };
  60. /**
  61. * struct user_fp_struct - User floating point registers
  62. *
  63. * This is the user-visible floating point register state structure.
  64. * It uses the same layout and size as elf_fpregset_t.
  65. *
  66. * It can be accessed through PTRACE_GETREGSET with NT_PRFPREG
  67. * and through PTRACE_GETFPREGS.
  68. */
  69. struct user_fp_struct {
  70. __u64 fr[32];
  71. };
  72. /*
  73. * The numbers chosen here are somewhat arbitrary but absolutely MUST
  74. * not overlap with any of the number assigned in <linux/ptrace.h>.
  75. *
  76. * These ones are taken from IA-64 on the assumption that theirs are
  77. * the most correct (and we also want to support PTRACE_SINGLEBLOCK
  78. * since we have taken branch traps too)
  79. */
  80. #define PTRACE_SINGLEBLOCK 12 /* resume execution until next branch */
  81. #define PTRACE_GETREGS 18
  82. #define PTRACE_SETREGS 19
  83. #define PTRACE_GETFPREGS 14
  84. #define PTRACE_SETFPREGS 15
  85. #endif /* _UAPI_PARISC_PTRACE_H */