mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
2.1 KiB
108 lines
2.1 KiB
/* SPDX-License-Identifier: GPL-2.0 */ |
|
#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); |
|
|
|
#define PERF_REGS_MAX PERF_REG_X86_XMM_MAX |
|
#ifndef HAVE_ARCH_X86_64_SUPPORT |
|
#define PERF_REGS_MASK ((1ULL << PERF_REG_X86_32_MAX) - 1) |
|
#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_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 */ |
|
|
|
#define XMM(x) \ |
|
case PERF_REG_X86_XMM ## x: \ |
|
case PERF_REG_X86_XMM ## x + 1: \ |
|
return "XMM" #x; |
|
XMM(0) |
|
XMM(1) |
|
XMM(2) |
|
XMM(3) |
|
XMM(4) |
|
XMM(5) |
|
XMM(6) |
|
XMM(7) |
|
XMM(8) |
|
XMM(9) |
|
XMM(10) |
|
XMM(11) |
|
XMM(12) |
|
XMM(13) |
|
XMM(14) |
|
XMM(15) |
|
#undef XMM |
|
default: |
|
return NULL; |
|
} |
|
|
|
return NULL; |
|
} |
|
|
|
#endif /* ARCH_PERF_REGS_H */
|
|
|