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/mips/include/uapi/asm/perf_regs.h"
762306a36Sopenharmony_ci
862306a36Sopenharmony_ciconst char *__perf_reg_name_mips(int id)
962306a36Sopenharmony_ci{
1062306a36Sopenharmony_ci	switch (id) {
1162306a36Sopenharmony_ci	case PERF_REG_MIPS_PC:
1262306a36Sopenharmony_ci		return "PC";
1362306a36Sopenharmony_ci	case PERF_REG_MIPS_R1:
1462306a36Sopenharmony_ci		return "$1";
1562306a36Sopenharmony_ci	case PERF_REG_MIPS_R2:
1662306a36Sopenharmony_ci		return "$2";
1762306a36Sopenharmony_ci	case PERF_REG_MIPS_R3:
1862306a36Sopenharmony_ci		return "$3";
1962306a36Sopenharmony_ci	case PERF_REG_MIPS_R4:
2062306a36Sopenharmony_ci		return "$4";
2162306a36Sopenharmony_ci	case PERF_REG_MIPS_R5:
2262306a36Sopenharmony_ci		return "$5";
2362306a36Sopenharmony_ci	case PERF_REG_MIPS_R6:
2462306a36Sopenharmony_ci		return "$6";
2562306a36Sopenharmony_ci	case PERF_REG_MIPS_R7:
2662306a36Sopenharmony_ci		return "$7";
2762306a36Sopenharmony_ci	case PERF_REG_MIPS_R8:
2862306a36Sopenharmony_ci		return "$8";
2962306a36Sopenharmony_ci	case PERF_REG_MIPS_R9:
3062306a36Sopenharmony_ci		return "$9";
3162306a36Sopenharmony_ci	case PERF_REG_MIPS_R10:
3262306a36Sopenharmony_ci		return "$10";
3362306a36Sopenharmony_ci	case PERF_REG_MIPS_R11:
3462306a36Sopenharmony_ci		return "$11";
3562306a36Sopenharmony_ci	case PERF_REG_MIPS_R12:
3662306a36Sopenharmony_ci		return "$12";
3762306a36Sopenharmony_ci	case PERF_REG_MIPS_R13:
3862306a36Sopenharmony_ci		return "$13";
3962306a36Sopenharmony_ci	case PERF_REG_MIPS_R14:
4062306a36Sopenharmony_ci		return "$14";
4162306a36Sopenharmony_ci	case PERF_REG_MIPS_R15:
4262306a36Sopenharmony_ci		return "$15";
4362306a36Sopenharmony_ci	case PERF_REG_MIPS_R16:
4462306a36Sopenharmony_ci		return "$16";
4562306a36Sopenharmony_ci	case PERF_REG_MIPS_R17:
4662306a36Sopenharmony_ci		return "$17";
4762306a36Sopenharmony_ci	case PERF_REG_MIPS_R18:
4862306a36Sopenharmony_ci		return "$18";
4962306a36Sopenharmony_ci	case PERF_REG_MIPS_R19:
5062306a36Sopenharmony_ci		return "$19";
5162306a36Sopenharmony_ci	case PERF_REG_MIPS_R20:
5262306a36Sopenharmony_ci		return "$20";
5362306a36Sopenharmony_ci	case PERF_REG_MIPS_R21:
5462306a36Sopenharmony_ci		return "$21";
5562306a36Sopenharmony_ci	case PERF_REG_MIPS_R22:
5662306a36Sopenharmony_ci		return "$22";
5762306a36Sopenharmony_ci	case PERF_REG_MIPS_R23:
5862306a36Sopenharmony_ci		return "$23";
5962306a36Sopenharmony_ci	case PERF_REG_MIPS_R24:
6062306a36Sopenharmony_ci		return "$24";
6162306a36Sopenharmony_ci	case PERF_REG_MIPS_R25:
6262306a36Sopenharmony_ci		return "$25";
6362306a36Sopenharmony_ci	case PERF_REG_MIPS_R28:
6462306a36Sopenharmony_ci		return "$28";
6562306a36Sopenharmony_ci	case PERF_REG_MIPS_R29:
6662306a36Sopenharmony_ci		return "$29";
6762306a36Sopenharmony_ci	case PERF_REG_MIPS_R30:
6862306a36Sopenharmony_ci		return "$30";
6962306a36Sopenharmony_ci	case PERF_REG_MIPS_R31:
7062306a36Sopenharmony_ci		return "$31";
7162306a36Sopenharmony_ci	default:
7262306a36Sopenharmony_ci		break;
7362306a36Sopenharmony_ci	}
7462306a36Sopenharmony_ci	return NULL;
7562306a36Sopenharmony_ci}
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ciuint64_t __perf_reg_ip_mips(void)
7862306a36Sopenharmony_ci{
7962306a36Sopenharmony_ci	return PERF_REG_MIPS_PC;
8062306a36Sopenharmony_ci}
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ciuint64_t __perf_reg_sp_mips(void)
8362306a36Sopenharmony_ci{
8462306a36Sopenharmony_ci	return PERF_REG_MIPS_R29;
8562306a36Sopenharmony_ci}
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ci#endif
88