/* 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 #include #include #define PERF_REGS_MASK ((1ULL << PERF_REG_CSKY_MAX) - 1) #define PERF_REGS_MAX PERF_REG_CSKY_MAX #define PERF_SAMPLE_REGS_ABI PERF_SAMPLE_REGS_ABI_32 #define PERF_REG_IP PERF_REG_CSKY_PC #define PERF_REG_SP PERF_REG_CSKY_SP static inline const char *perf_reg_name(int id) { switch (id) { case PERF_REG_CSKY_A0: return "a0"; case PERF_REG_CSKY_A1: return "a1"; case PERF_REG_CSKY_A2: return "a2"; case PERF_REG_CSKY_A3: return "a3"; case PERF_REG_CSKY_REGS0: return "regs0"; case PERF_REG_CSKY_REGS1: return "regs1"; case PERF_REG_CSKY_REGS2: return "regs2"; case PERF_REG_CSKY_REGS3: return "regs3"; case PERF_REG_CSKY_REGS4: return "regs4"; case PERF_REG_CSKY_REGS5: return "regs5"; case PERF_REG_CSKY_REGS6: return "regs6"; case PERF_REG_CSKY_REGS7: return "regs7"; case PERF_REG_CSKY_REGS8: return "regs8"; case PERF_REG_CSKY_REGS9: return "regs9"; case PERF_REG_CSKY_SP: return "sp"; case PERF_REG_CSKY_LR: return "lr"; case PERF_REG_CSKY_PC: return "pc"; #if defined(__CSKYABIV2__) case PERF_REG_CSKY_EXREGS0: return "exregs0"; case PERF_REG_CSKY_EXREGS1: return "exregs1"; case PERF_REG_CSKY_EXREGS2: return "exregs2"; case PERF_REG_CSKY_EXREGS3: return "exregs3"; case PERF_REG_CSKY_EXREGS4: return "exregs4"; case PERF_REG_CSKY_EXREGS5: return "exregs5"; case PERF_REG_CSKY_EXREGS6: return "exregs6"; case PERF_REG_CSKY_EXREGS7: return "exregs7"; case PERF_REG_CSKY_EXREGS8: return "exregs8"; case PERF_REG_CSKY_EXREGS9: return "exregs9"; case PERF_REG_CSKY_EXREGS10: return "exregs10"; case PERF_REG_CSKY_EXREGS11: return "exregs11"; case PERF_REG_CSKY_EXREGS12: return "exregs12"; case PERF_REG_CSKY_EXREGS13: return "exregs13"; case PERF_REG_CSKY_EXREGS14: return "exregs14"; case PERF_REG_CSKY_TLS: return "tls"; case PERF_REG_CSKY_HI: return "hi"; case PERF_REG_CSKY_LO: return "lo"; #endif default: return NULL; } return NULL; } #endif /* ARCH_PERF_REGS_H */