162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci 362306a36Sopenharmony_ci#ifdef HAVE_PERF_REGS_SUPPORT 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci#include "../perf_regs.h" 662306a36Sopenharmony_ci#include "../../arch/csky/include/uapi/asm/perf_regs.h" 762306a36Sopenharmony_ci 862306a36Sopenharmony_ciconst char *__perf_reg_name_csky(int id) 962306a36Sopenharmony_ci{ 1062306a36Sopenharmony_ci switch (id) { 1162306a36Sopenharmony_ci case PERF_REG_CSKY_A0: 1262306a36Sopenharmony_ci return "a0"; 1362306a36Sopenharmony_ci case PERF_REG_CSKY_A1: 1462306a36Sopenharmony_ci return "a1"; 1562306a36Sopenharmony_ci case PERF_REG_CSKY_A2: 1662306a36Sopenharmony_ci return "a2"; 1762306a36Sopenharmony_ci case PERF_REG_CSKY_A3: 1862306a36Sopenharmony_ci return "a3"; 1962306a36Sopenharmony_ci case PERF_REG_CSKY_REGS0: 2062306a36Sopenharmony_ci return "regs0"; 2162306a36Sopenharmony_ci case PERF_REG_CSKY_REGS1: 2262306a36Sopenharmony_ci return "regs1"; 2362306a36Sopenharmony_ci case PERF_REG_CSKY_REGS2: 2462306a36Sopenharmony_ci return "regs2"; 2562306a36Sopenharmony_ci case PERF_REG_CSKY_REGS3: 2662306a36Sopenharmony_ci return "regs3"; 2762306a36Sopenharmony_ci case PERF_REG_CSKY_REGS4: 2862306a36Sopenharmony_ci return "regs4"; 2962306a36Sopenharmony_ci case PERF_REG_CSKY_REGS5: 3062306a36Sopenharmony_ci return "regs5"; 3162306a36Sopenharmony_ci case PERF_REG_CSKY_REGS6: 3262306a36Sopenharmony_ci return "regs6"; 3362306a36Sopenharmony_ci case PERF_REG_CSKY_REGS7: 3462306a36Sopenharmony_ci return "regs7"; 3562306a36Sopenharmony_ci case PERF_REG_CSKY_REGS8: 3662306a36Sopenharmony_ci return "regs8"; 3762306a36Sopenharmony_ci case PERF_REG_CSKY_REGS9: 3862306a36Sopenharmony_ci return "regs9"; 3962306a36Sopenharmony_ci case PERF_REG_CSKY_SP: 4062306a36Sopenharmony_ci return "sp"; 4162306a36Sopenharmony_ci case PERF_REG_CSKY_LR: 4262306a36Sopenharmony_ci return "lr"; 4362306a36Sopenharmony_ci case PERF_REG_CSKY_PC: 4462306a36Sopenharmony_ci return "pc"; 4562306a36Sopenharmony_ci#if defined(__CSKYABIV2__) 4662306a36Sopenharmony_ci case PERF_REG_CSKY_EXREGS0: 4762306a36Sopenharmony_ci return "exregs0"; 4862306a36Sopenharmony_ci case PERF_REG_CSKY_EXREGS1: 4962306a36Sopenharmony_ci return "exregs1"; 5062306a36Sopenharmony_ci case PERF_REG_CSKY_EXREGS2: 5162306a36Sopenharmony_ci return "exregs2"; 5262306a36Sopenharmony_ci case PERF_REG_CSKY_EXREGS3: 5362306a36Sopenharmony_ci return "exregs3"; 5462306a36Sopenharmony_ci case PERF_REG_CSKY_EXREGS4: 5562306a36Sopenharmony_ci return "exregs4"; 5662306a36Sopenharmony_ci case PERF_REG_CSKY_EXREGS5: 5762306a36Sopenharmony_ci return "exregs5"; 5862306a36Sopenharmony_ci case PERF_REG_CSKY_EXREGS6: 5962306a36Sopenharmony_ci return "exregs6"; 6062306a36Sopenharmony_ci case PERF_REG_CSKY_EXREGS7: 6162306a36Sopenharmony_ci return "exregs7"; 6262306a36Sopenharmony_ci case PERF_REG_CSKY_EXREGS8: 6362306a36Sopenharmony_ci return "exregs8"; 6462306a36Sopenharmony_ci case PERF_REG_CSKY_EXREGS9: 6562306a36Sopenharmony_ci return "exregs9"; 6662306a36Sopenharmony_ci case PERF_REG_CSKY_EXREGS10: 6762306a36Sopenharmony_ci return "exregs10"; 6862306a36Sopenharmony_ci case PERF_REG_CSKY_EXREGS11: 6962306a36Sopenharmony_ci return "exregs11"; 7062306a36Sopenharmony_ci case PERF_REG_CSKY_EXREGS12: 7162306a36Sopenharmony_ci return "exregs12"; 7262306a36Sopenharmony_ci case PERF_REG_CSKY_EXREGS13: 7362306a36Sopenharmony_ci return "exregs13"; 7462306a36Sopenharmony_ci case PERF_REG_CSKY_EXREGS14: 7562306a36Sopenharmony_ci return "exregs14"; 7662306a36Sopenharmony_ci case PERF_REG_CSKY_TLS: 7762306a36Sopenharmony_ci return "tls"; 7862306a36Sopenharmony_ci case PERF_REG_CSKY_HI: 7962306a36Sopenharmony_ci return "hi"; 8062306a36Sopenharmony_ci case PERF_REG_CSKY_LO: 8162306a36Sopenharmony_ci return "lo"; 8262306a36Sopenharmony_ci#endif 8362306a36Sopenharmony_ci default: 8462306a36Sopenharmony_ci return NULL; 8562306a36Sopenharmony_ci } 8662306a36Sopenharmony_ci 8762306a36Sopenharmony_ci return NULL; 8862306a36Sopenharmony_ci} 8962306a36Sopenharmony_ci 9062306a36Sopenharmony_ciuint64_t __perf_reg_ip_csky(void) 9162306a36Sopenharmony_ci{ 9262306a36Sopenharmony_ci return PERF_REG_CSKY_PC; 9362306a36Sopenharmony_ci} 9462306a36Sopenharmony_ci 9562306a36Sopenharmony_ciuint64_t __perf_reg_sp_csky(void) 9662306a36Sopenharmony_ci{ 9762306a36Sopenharmony_ci return PERF_REG_CSKY_SP; 9862306a36Sopenharmony_ci} 9962306a36Sopenharmony_ci 10062306a36Sopenharmony_ci#endif 101