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/loongarch/include/uapi/asm/perf_regs.h" 762306a36Sopenharmony_ci 862306a36Sopenharmony_ciconst char *__perf_reg_name_loongarch(int id) 962306a36Sopenharmony_ci{ 1062306a36Sopenharmony_ci switch (id) { 1162306a36Sopenharmony_ci case PERF_REG_LOONGARCH_PC: 1262306a36Sopenharmony_ci return "PC"; 1362306a36Sopenharmony_ci case PERF_REG_LOONGARCH_R1: 1462306a36Sopenharmony_ci return "%r1"; 1562306a36Sopenharmony_ci case PERF_REG_LOONGARCH_R2: 1662306a36Sopenharmony_ci return "%r2"; 1762306a36Sopenharmony_ci case PERF_REG_LOONGARCH_R3: 1862306a36Sopenharmony_ci return "%r3"; 1962306a36Sopenharmony_ci case PERF_REG_LOONGARCH_R4: 2062306a36Sopenharmony_ci return "%r4"; 2162306a36Sopenharmony_ci case PERF_REG_LOONGARCH_R5: 2262306a36Sopenharmony_ci return "%r5"; 2362306a36Sopenharmony_ci case PERF_REG_LOONGARCH_R6: 2462306a36Sopenharmony_ci return "%r6"; 2562306a36Sopenharmony_ci case PERF_REG_LOONGARCH_R7: 2662306a36Sopenharmony_ci return "%r7"; 2762306a36Sopenharmony_ci case PERF_REG_LOONGARCH_R8: 2862306a36Sopenharmony_ci return "%r8"; 2962306a36Sopenharmony_ci case PERF_REG_LOONGARCH_R9: 3062306a36Sopenharmony_ci return "%r9"; 3162306a36Sopenharmony_ci case PERF_REG_LOONGARCH_R10: 3262306a36Sopenharmony_ci return "%r10"; 3362306a36Sopenharmony_ci case PERF_REG_LOONGARCH_R11: 3462306a36Sopenharmony_ci return "%r11"; 3562306a36Sopenharmony_ci case PERF_REG_LOONGARCH_R12: 3662306a36Sopenharmony_ci return "%r12"; 3762306a36Sopenharmony_ci case PERF_REG_LOONGARCH_R13: 3862306a36Sopenharmony_ci return "%r13"; 3962306a36Sopenharmony_ci case PERF_REG_LOONGARCH_R14: 4062306a36Sopenharmony_ci return "%r14"; 4162306a36Sopenharmony_ci case PERF_REG_LOONGARCH_R15: 4262306a36Sopenharmony_ci return "%r15"; 4362306a36Sopenharmony_ci case PERF_REG_LOONGARCH_R16: 4462306a36Sopenharmony_ci return "%r16"; 4562306a36Sopenharmony_ci case PERF_REG_LOONGARCH_R17: 4662306a36Sopenharmony_ci return "%r17"; 4762306a36Sopenharmony_ci case PERF_REG_LOONGARCH_R18: 4862306a36Sopenharmony_ci return "%r18"; 4962306a36Sopenharmony_ci case PERF_REG_LOONGARCH_R19: 5062306a36Sopenharmony_ci return "%r19"; 5162306a36Sopenharmony_ci case PERF_REG_LOONGARCH_R20: 5262306a36Sopenharmony_ci return "%r20"; 5362306a36Sopenharmony_ci case PERF_REG_LOONGARCH_R21: 5462306a36Sopenharmony_ci return "%r21"; 5562306a36Sopenharmony_ci case PERF_REG_LOONGARCH_R22: 5662306a36Sopenharmony_ci return "%r22"; 5762306a36Sopenharmony_ci case PERF_REG_LOONGARCH_R23: 5862306a36Sopenharmony_ci return "%r23"; 5962306a36Sopenharmony_ci case PERF_REG_LOONGARCH_R24: 6062306a36Sopenharmony_ci return "%r24"; 6162306a36Sopenharmony_ci case PERF_REG_LOONGARCH_R25: 6262306a36Sopenharmony_ci return "%r25"; 6362306a36Sopenharmony_ci case PERF_REG_LOONGARCH_R26: 6462306a36Sopenharmony_ci return "%r26"; 6562306a36Sopenharmony_ci case PERF_REG_LOONGARCH_R27: 6662306a36Sopenharmony_ci return "%r27"; 6762306a36Sopenharmony_ci case PERF_REG_LOONGARCH_R28: 6862306a36Sopenharmony_ci return "%r28"; 6962306a36Sopenharmony_ci case PERF_REG_LOONGARCH_R29: 7062306a36Sopenharmony_ci return "%r29"; 7162306a36Sopenharmony_ci case PERF_REG_LOONGARCH_R30: 7262306a36Sopenharmony_ci return "%r30"; 7362306a36Sopenharmony_ci case PERF_REG_LOONGARCH_R31: 7462306a36Sopenharmony_ci return "%r31"; 7562306a36Sopenharmony_ci default: 7662306a36Sopenharmony_ci break; 7762306a36Sopenharmony_ci } 7862306a36Sopenharmony_ci return NULL; 7962306a36Sopenharmony_ci} 8062306a36Sopenharmony_ci 8162306a36Sopenharmony_ciuint64_t __perf_reg_ip_loongarch(void) 8262306a36Sopenharmony_ci{ 8362306a36Sopenharmony_ci return PERF_REG_LOONGARCH_PC; 8462306a36Sopenharmony_ci} 8562306a36Sopenharmony_ci 8662306a36Sopenharmony_ciuint64_t __perf_reg_sp_loongarch(void) 8762306a36Sopenharmony_ci{ 8862306a36Sopenharmony_ci return PERF_REG_LOONGARCH_R3; 8962306a36Sopenharmony_ci} 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ci#endif 92