/* SPDX-License-Identifier: GPL-2.0 */ /* Copyright (C) 2019 Hangzhou C-SKY Microsystems co.,ltd. */ #ifndef ARCH_PERF_REGS_H #define ARCH_PERF_REGS_H #include <stdlib.h> #include <linux/types.h> #include <asm/perf_regs.h> #define PERF_REGS_MASK ((1ULL << PERF_REG_RISCV_MAX) - 1) #define PERF_REGS_MAX PERF_REG_RISCV_MAX #if __riscv_xlen == 64 #define PERF_SAMPLE_REGS_ABI PERF_SAMPLE_REGS_ABI_64 #else #define PERF_SAMPLE_REGS_ABI PERF_SAMPLE_REGS_ABI_32 #endif #define PERF_REG_IP PERF_REG_RISCV_PC #define PERF_REG_SP PERF_REG_RISCV_SP static inline const char *perf_reg_name(int id) { switch (id) { case PERF_REG_RISCV_PC: return "pc"; case PERF_REG_RISCV_RA: return "ra"; case PERF_REG_RISCV_SP: return "sp"; case PERF_REG_RISCV_GP: return "gp"; case PERF_REG_RISCV_TP: return "tp"; case PERF_REG_RISCV_T0: return "t0"; case PERF_REG_RISCV_T1: return "t1"; case PERF_REG_RISCV_T2: return "t2"; case PERF_REG_RISCV_S0: return "s0"; case PERF_REG_RISCV_S1: return "s1"; case PERF_REG_RISCV_A0: return "a0"; case PERF_REG_RISCV_A1: return "a1"; case PERF_REG_RISCV_A2: return "a2"; case PERF_REG_RISCV_A3: return "a3"; case PERF_REG_RISCV_A4: return "a4"; case PERF_REG_RISCV_A5: return "a5"; case PERF_REG_RISCV_A6: return "a6"; case PERF_REG_RISCV_A7: return "a7"; case PERF_REG_RISCV_S2: return "s2"; case PERF_REG_RISCV_S3: return "s3"; case PERF_REG_RISCV_S4: return "s4"; case PERF_REG_RISCV_S5: return "s5"; case PERF_REG_RISCV_S6: return "s6"; case PERF_REG_RISCV_S7: return "s7"; case PERF_REG_RISCV_S8: return "s8"; case PERF_REG_RISCV_S9: return "s9"; case PERF_REG_RISCV_S10: return "s10"; case PERF_REG_RISCV_S11: return "s11"; case PERF_REG_RISCV_T3: return "t3"; case PERF_REG_RISCV_T4: return "t4"; case PERF_REG_RISCV_T5: return "t5"; case PERF_REG_RISCV_T6: return "t6"; default: return NULL; } return NULL; } #endif /* ARCH_PERF_REGS_H */ |