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