perf_regs.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #ifndef ARCH_PERF_REGS_H
  2. #define ARCH_PERF_REGS_H
  3. #include <stdlib.h>
  4. #include <linux/types.h>
  5. #include <asm/perf_regs.h>
  6. void perf_regs_load(u64 *regs);
  7. #ifndef HAVE_ARCH_X86_64_SUPPORT
  8. #define PERF_REGS_MASK ((1ULL << PERF_REG_X86_32_MAX) - 1)
  9. #define PERF_REGS_MAX PERF_REG_X86_32_MAX
  10. #define PERF_SAMPLE_REGS_ABI PERF_SAMPLE_REGS_ABI_32
  11. #else
  12. #define REG_NOSUPPORT ((1ULL << PERF_REG_X86_DS) | \
  13. (1ULL << PERF_REG_X86_ES) | \
  14. (1ULL << PERF_REG_X86_FS) | \
  15. (1ULL << PERF_REG_X86_GS))
  16. #define PERF_REGS_MASK (((1ULL << PERF_REG_X86_64_MAX) - 1) & ~REG_NOSUPPORT)
  17. #define PERF_REGS_MAX PERF_REG_X86_64_MAX
  18. #define PERF_SAMPLE_REGS_ABI PERF_SAMPLE_REGS_ABI_64
  19. #endif
  20. #define PERF_REG_IP PERF_REG_X86_IP
  21. #define PERF_REG_SP PERF_REG_X86_SP
  22. static inline const char *perf_reg_name(int id)
  23. {
  24. switch (id) {
  25. case PERF_REG_X86_AX:
  26. return "AX";
  27. case PERF_REG_X86_BX:
  28. return "BX";
  29. case PERF_REG_X86_CX:
  30. return "CX";
  31. case PERF_REG_X86_DX:
  32. return "DX";
  33. case PERF_REG_X86_SI:
  34. return "SI";
  35. case PERF_REG_X86_DI:
  36. return "DI";
  37. case PERF_REG_X86_BP:
  38. return "BP";
  39. case PERF_REG_X86_SP:
  40. return "SP";
  41. case PERF_REG_X86_IP:
  42. return "IP";
  43. case PERF_REG_X86_FLAGS:
  44. return "FLAGS";
  45. case PERF_REG_X86_CS:
  46. return "CS";
  47. case PERF_REG_X86_SS:
  48. return "SS";
  49. case PERF_REG_X86_DS:
  50. return "DS";
  51. case PERF_REG_X86_ES:
  52. return "ES";
  53. case PERF_REG_X86_FS:
  54. return "FS";
  55. case PERF_REG_X86_GS:
  56. return "GS";
  57. #ifdef HAVE_ARCH_X86_64_SUPPORT
  58. case PERF_REG_X86_R8:
  59. return "R8";
  60. case PERF_REG_X86_R9:
  61. return "R9";
  62. case PERF_REG_X86_R10:
  63. return "R10";
  64. case PERF_REG_X86_R11:
  65. return "R11";
  66. case PERF_REG_X86_R12:
  67. return "R12";
  68. case PERF_REG_X86_R13:
  69. return "R13";
  70. case PERF_REG_X86_R14:
  71. return "R14";
  72. case PERF_REG_X86_R15:
  73. return "R15";
  74. #endif /* HAVE_ARCH_X86_64_SUPPORT */
  75. default:
  76. return NULL;
  77. }
  78. return NULL;
  79. }
  80. #endif /* ARCH_PERF_REGS_H */