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