| #ifndef ARCH_PERF_REGS_H | |
| #define ARCH_PERF_REGS_H | |
| #include <stdlib.h> | |
| #include <linux/types.h> | |
| #include <asm/perf_regs.h> | |
| void perf_regs_load(u64 *regs); | |
| #ifndef HAVE_ARCH_X86_64_SUPPORT | |
| #define PERF_REGS_MASK ((1ULL << PERF_REG_X86_32_MAX) - 1) | |
| #define PERF_REGS_MAX PERF_REG_X86_32_MAX | |
| #define PERF_SAMPLE_REGS_ABI PERF_SAMPLE_REGS_ABI_32 | |
| #else | |
| #define REG_NOSUPPORT ((1ULL << PERF_REG_X86_DS) | \ | |
| (1ULL << PERF_REG_X86_ES) | \ | |
| (1ULL << PERF_REG_X86_FS) | \ | |
| (1ULL << PERF_REG_X86_GS)) | |
| #define PERF_REGS_MASK (((1ULL << PERF_REG_X86_64_MAX) - 1) & ~REG_NOSUPPORT) | |
| #define PERF_REGS_MAX PERF_REG_X86_64_MAX | |
| #define PERF_SAMPLE_REGS_ABI PERF_SAMPLE_REGS_ABI_64 | |
| #endif | |
| #define PERF_REG_IP PERF_REG_X86_IP | |
| #define PERF_REG_SP PERF_REG_X86_SP | |
| static inline const char *perf_reg_name(int id) | |
| { | |
| switch (id) { | |
| case PERF_REG_X86_AX: | |
| return "AX"; | |
| case PERF_REG_X86_BX: | |
| return "BX"; | |
| case PERF_REG_X86_CX: | |
| return "CX"; | |
| case PERF_REG_X86_DX: | |
| return "DX"; | |
| case PERF_REG_X86_SI: | |
| return "SI"; | |
| case PERF_REG_X86_DI: | |
| return "DI"; | |
| case PERF_REG_X86_BP: | |
| return "BP"; | |
| case PERF_REG_X86_SP: | |
| return "SP"; | |
| case PERF_REG_X86_IP: | |
| return "IP"; | |
| case PERF_REG_X86_FLAGS: | |
| return "FLAGS"; | |
| case PERF_REG_X86_CS: | |
| return "CS"; | |
| case PERF_REG_X86_SS: | |
| return "SS"; | |
| case PERF_REG_X86_DS: | |
| return "DS"; | |
| case PERF_REG_X86_ES: | |
| return "ES"; | |
| case PERF_REG_X86_FS: | |
| return "FS"; | |
| case PERF_REG_X86_GS: | |
| return "GS"; | |
| #ifdef HAVE_ARCH_X86_64_SUPPORT | |
| case PERF_REG_X86_R8: | |
| return "R8"; | |
| case PERF_REG_X86_R9: | |
| return "R9"; | |
| case PERF_REG_X86_R10: | |
| return "R10"; | |
| case PERF_REG_X86_R11: | |
| return "R11"; | |
| case PERF_REG_X86_R12: | |
| return "R12"; | |
| case PERF_REG_X86_R13: | |
| return "R13"; | |
| case PERF_REG_X86_R14: | |
| return "R14"; | |
| case PERF_REG_X86_R15: | |
| return "R15"; | |
| #endif /* HAVE_ARCH_X86_64_SUPPORT */ | |
| default: | |
| return NULL; | |
| } | |
| return NULL; | |
| } | |
| #endif /* ARCH_PERF_REGS_H */ |