1// SPDX-License-Identifier: GPL-2.0
2
3#include "../perf_regs.h"
4#include "../../../arch/powerpc/include/uapi/asm/perf_regs.h"
5
6const char *__perf_reg_name_powerpc(int id)
7{
8	switch (id) {
9	case PERF_REG_POWERPC_R0:
10		return "r0";
11	case PERF_REG_POWERPC_R1:
12		return "r1";
13	case PERF_REG_POWERPC_R2:
14		return "r2";
15	case PERF_REG_POWERPC_R3:
16		return "r3";
17	case PERF_REG_POWERPC_R4:
18		return "r4";
19	case PERF_REG_POWERPC_R5:
20		return "r5";
21	case PERF_REG_POWERPC_R6:
22		return "r6";
23	case PERF_REG_POWERPC_R7:
24		return "r7";
25	case PERF_REG_POWERPC_R8:
26		return "r8";
27	case PERF_REG_POWERPC_R9:
28		return "r9";
29	case PERF_REG_POWERPC_R10:
30		return "r10";
31	case PERF_REG_POWERPC_R11:
32		return "r11";
33	case PERF_REG_POWERPC_R12:
34		return "r12";
35	case PERF_REG_POWERPC_R13:
36		return "r13";
37	case PERF_REG_POWERPC_R14:
38		return "r14";
39	case PERF_REG_POWERPC_R15:
40		return "r15";
41	case PERF_REG_POWERPC_R16:
42		return "r16";
43	case PERF_REG_POWERPC_R17:
44		return "r17";
45	case PERF_REG_POWERPC_R18:
46		return "r18";
47	case PERF_REG_POWERPC_R19:
48		return "r19";
49	case PERF_REG_POWERPC_R20:
50		return "r20";
51	case PERF_REG_POWERPC_R21:
52		return "r21";
53	case PERF_REG_POWERPC_R22:
54		return "r22";
55	case PERF_REG_POWERPC_R23:
56		return "r23";
57	case PERF_REG_POWERPC_R24:
58		return "r24";
59	case PERF_REG_POWERPC_R25:
60		return "r25";
61	case PERF_REG_POWERPC_R26:
62		return "r26";
63	case PERF_REG_POWERPC_R27:
64		return "r27";
65	case PERF_REG_POWERPC_R28:
66		return "r28";
67	case PERF_REG_POWERPC_R29:
68		return "r29";
69	case PERF_REG_POWERPC_R30:
70		return "r30";
71	case PERF_REG_POWERPC_R31:
72		return "r31";
73	case PERF_REG_POWERPC_NIP:
74		return "nip";
75	case PERF_REG_POWERPC_MSR:
76		return "msr";
77	case PERF_REG_POWERPC_ORIG_R3:
78		return "orig_r3";
79	case PERF_REG_POWERPC_CTR:
80		return "ctr";
81	case PERF_REG_POWERPC_LINK:
82		return "link";
83	case PERF_REG_POWERPC_XER:
84		return "xer";
85	case PERF_REG_POWERPC_CCR:
86		return "ccr";
87	case PERF_REG_POWERPC_SOFTE:
88		return "softe";
89	case PERF_REG_POWERPC_TRAP:
90		return "trap";
91	case PERF_REG_POWERPC_DAR:
92		return "dar";
93	case PERF_REG_POWERPC_DSISR:
94		return "dsisr";
95	case PERF_REG_POWERPC_SIER:
96		return "sier";
97	case PERF_REG_POWERPC_MMCRA:
98		return "mmcra";
99	case PERF_REG_POWERPC_MMCR0:
100		return "mmcr0";
101	case PERF_REG_POWERPC_MMCR1:
102		return "mmcr1";
103	case PERF_REG_POWERPC_MMCR2:
104		return "mmcr2";
105	case PERF_REG_POWERPC_MMCR3:
106		return "mmcr3";
107	case PERF_REG_POWERPC_SIER2:
108		return "sier2";
109	case PERF_REG_POWERPC_SIER3:
110		return "sier3";
111	case PERF_REG_POWERPC_PMC1:
112		return "pmc1";
113	case PERF_REG_POWERPC_PMC2:
114		return "pmc2";
115	case PERF_REG_POWERPC_PMC3:
116		return "pmc3";
117	case PERF_REG_POWERPC_PMC4:
118		return "pmc4";
119	case PERF_REG_POWERPC_PMC5:
120		return "pmc5";
121	case PERF_REG_POWERPC_PMC6:
122		return "pmc6";
123	case PERF_REG_POWERPC_SDAR:
124		return "sdar";
125	case PERF_REG_POWERPC_SIAR:
126		return "siar";
127	default:
128		break;
129	}
130	return NULL;
131}
132
133uint64_t __perf_reg_ip_powerpc(void)
134{
135	return PERF_REG_POWERPC_NIP;
136}
137
138uint64_t __perf_reg_sp_powerpc(void)
139{
140	return PERF_REG_POWERPC_R1;
141}
142