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