1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef ARCH_PERF_REGS_H
3#define ARCH_PERF_REGS_H
4
5#include <stdlib.h>
6#include <linux/types.h>
7#include <asm/perf_regs.h>
8
9#define PERF_REGS_MAX PERF_REG_LOONGARCH_MAX
10#define PERF_REG_IP PERF_REG_LOONGARCH_PC
11#define PERF_REG_SP PERF_REG_LOONGARCH_R3
12
13#define PERF_REGS_MASK ((1ULL << PERF_REG_LOONGARCH_MAX) - 1)
14
15static inline const char *__perf_reg_name(int id)
16{
17	switch (id) {
18	case PERF_REG_LOONGARCH_PC:
19		return "PC";
20	case PERF_REG_LOONGARCH_R1:
21		return "$1";
22	case PERF_REG_LOONGARCH_R2:
23		return "$2";
24	case PERF_REG_LOONGARCH_R3:
25		return "$3";
26	case PERF_REG_LOONGARCH_R4:
27		return "$4";
28	case PERF_REG_LOONGARCH_R5:
29		return "$5";
30	case PERF_REG_LOONGARCH_R6:
31		return "$6";
32	case PERF_REG_LOONGARCH_R7:
33		return "$7";
34	case PERF_REG_LOONGARCH_R8:
35		return "$8";
36	case PERF_REG_LOONGARCH_R9:
37		return "$9";
38	case PERF_REG_LOONGARCH_R10:
39		return "$10";
40	case PERF_REG_LOONGARCH_R11:
41		return "$11";
42	case PERF_REG_LOONGARCH_R12:
43		return "$12";
44	case PERF_REG_LOONGARCH_R13:
45		return "$13";
46	case PERF_REG_LOONGARCH_R14:
47		return "$14";
48	case PERF_REG_LOONGARCH_R15:
49		return "$15";
50	case PERF_REG_LOONGARCH_R16:
51		return "$16";
52	case PERF_REG_LOONGARCH_R17:
53		return "$17";
54	case PERF_REG_LOONGARCH_R18:
55		return "$18";
56	case PERF_REG_LOONGARCH_R19:
57		return "$19";
58	case PERF_REG_LOONGARCH_R20:
59		return "$20";
60	case PERF_REG_LOONGARCH_R21:
61		return "$21";
62	case PERF_REG_LOONGARCH_R22:
63		return "$22";
64	case PERF_REG_LOONGARCH_R23:
65		return "$23";
66	case PERF_REG_LOONGARCH_R24:
67		return "$24";
68	case PERF_REG_LOONGARCH_R25:
69		return "$25";
70	case PERF_REG_LOONGARCH_R26:
71		return "$26";
72	case PERF_REG_LOONGARCH_R27:
73		return "$27";
74	case PERF_REG_LOONGARCH_R28:
75		return "$28";
76	case PERF_REG_LOONGARCH_R29:
77		return "$29";
78	case PERF_REG_LOONGARCH_R30:
79		return "$30";
80	case PERF_REG_LOONGARCH_R31:
81		return "$31";
82	default:
83		break;
84	}
85	return NULL;
86}
87
88#endif /* ARCH_PERF_REGS_H */
89