xref: /linux/tools/perf/arch/powerpc/util/unwind-libunwind.c (revision 75bf465f0bc33e9b776a46d6a1b9b990f5fb7c37)
1*2874c5fdSThomas Gleixner // SPDX-License-Identifier: GPL-2.0-or-later
2c4522469SChandan Kumar /*
3c4522469SChandan Kumar  * Copyright 2016 Chandan Kumar, IBM Corporation.
4c4522469SChandan Kumar  */
5c4522469SChandan Kumar 
6c4522469SChandan Kumar #include <errno.h>
7c4522469SChandan Kumar #include <libunwind.h>
8c4522469SChandan Kumar #include <asm/perf_regs.h>
9c4522469SChandan Kumar #include "../../util/unwind.h"
10c4522469SChandan Kumar #include "../../util/debug.h"
11c4522469SChandan Kumar 
libunwind__arch_reg_id(int regnum)12c4522469SChandan Kumar int libunwind__arch_reg_id(int regnum)
13c4522469SChandan Kumar {
14c4522469SChandan Kumar 	switch (regnum) {
15c4522469SChandan Kumar 	case UNW_PPC64_R0:
16c4522469SChandan Kumar 		return PERF_REG_POWERPC_R0;
17c4522469SChandan Kumar 	case UNW_PPC64_R1:
18c4522469SChandan Kumar 		return PERF_REG_POWERPC_R1;
19c4522469SChandan Kumar 	case UNW_PPC64_R2:
20c4522469SChandan Kumar 		return PERF_REG_POWERPC_R2;
21c4522469SChandan Kumar 	case UNW_PPC64_R3:
22c4522469SChandan Kumar 		return PERF_REG_POWERPC_R3;
23c4522469SChandan Kumar 	case UNW_PPC64_R4:
24c4522469SChandan Kumar 		return PERF_REG_POWERPC_R4;
25c4522469SChandan Kumar 	case UNW_PPC64_R5:
26c4522469SChandan Kumar 		return PERF_REG_POWERPC_R5;
27c4522469SChandan Kumar 	case UNW_PPC64_R6:
28c4522469SChandan Kumar 		return PERF_REG_POWERPC_R6;
29c4522469SChandan Kumar 	case UNW_PPC64_R7:
30c4522469SChandan Kumar 		return PERF_REG_POWERPC_R7;
31c4522469SChandan Kumar 	case UNW_PPC64_R8:
32c4522469SChandan Kumar 		return PERF_REG_POWERPC_R8;
33c4522469SChandan Kumar 	case UNW_PPC64_R9:
34c4522469SChandan Kumar 		return PERF_REG_POWERPC_R9;
35c4522469SChandan Kumar 	case UNW_PPC64_R10:
36c4522469SChandan Kumar 		return PERF_REG_POWERPC_R10;
37c4522469SChandan Kumar 	case UNW_PPC64_R11:
38c4522469SChandan Kumar 		return PERF_REG_POWERPC_R11;
39c4522469SChandan Kumar 	case UNW_PPC64_R12:
40c4522469SChandan Kumar 		return PERF_REG_POWERPC_R12;
41c4522469SChandan Kumar 	case UNW_PPC64_R13:
42c4522469SChandan Kumar 		return PERF_REG_POWERPC_R13;
43c4522469SChandan Kumar 	case UNW_PPC64_R14:
44c4522469SChandan Kumar 		return PERF_REG_POWERPC_R14;
45c4522469SChandan Kumar 	case UNW_PPC64_R15:
46c4522469SChandan Kumar 		return PERF_REG_POWERPC_R15;
47c4522469SChandan Kumar 	case UNW_PPC64_R16:
48c4522469SChandan Kumar 		return PERF_REG_POWERPC_R16;
49c4522469SChandan Kumar 	case UNW_PPC64_R17:
50c4522469SChandan Kumar 		return PERF_REG_POWERPC_R17;
51c4522469SChandan Kumar 	case UNW_PPC64_R18:
52c4522469SChandan Kumar 		return PERF_REG_POWERPC_R18;
53c4522469SChandan Kumar 	case UNW_PPC64_R19:
54c4522469SChandan Kumar 		return PERF_REG_POWERPC_R19;
55c4522469SChandan Kumar 	case UNW_PPC64_R20:
56c4522469SChandan Kumar 		return PERF_REG_POWERPC_R20;
57c4522469SChandan Kumar 	case UNW_PPC64_R21:
58c4522469SChandan Kumar 		return PERF_REG_POWERPC_R21;
59c4522469SChandan Kumar 	case UNW_PPC64_R22:
60c4522469SChandan Kumar 		return PERF_REG_POWERPC_R22;
61c4522469SChandan Kumar 	case UNW_PPC64_R23:
62c4522469SChandan Kumar 		return PERF_REG_POWERPC_R23;
63c4522469SChandan Kumar 	case UNW_PPC64_R24:
64c4522469SChandan Kumar 		return PERF_REG_POWERPC_R24;
65c4522469SChandan Kumar 	case UNW_PPC64_R25:
66c4522469SChandan Kumar 		return PERF_REG_POWERPC_R25;
67c4522469SChandan Kumar 	case UNW_PPC64_R26:
68c4522469SChandan Kumar 		return PERF_REG_POWERPC_R26;
69c4522469SChandan Kumar 	case UNW_PPC64_R27:
70c4522469SChandan Kumar 		return PERF_REG_POWERPC_R27;
71c4522469SChandan Kumar 	case UNW_PPC64_R28:
72c4522469SChandan Kumar 		return PERF_REG_POWERPC_R28;
73c4522469SChandan Kumar 	case UNW_PPC64_R29:
74c4522469SChandan Kumar 		return PERF_REG_POWERPC_R29;
75c4522469SChandan Kumar 	case UNW_PPC64_R30:
76c4522469SChandan Kumar 		return PERF_REG_POWERPC_R30;
77c4522469SChandan Kumar 	case UNW_PPC64_R31:
78c4522469SChandan Kumar 		return PERF_REG_POWERPC_R31;
79c4522469SChandan Kumar 	case UNW_PPC64_LR:
80c4522469SChandan Kumar 		return PERF_REG_POWERPC_LINK;
81c4522469SChandan Kumar 	case UNW_PPC64_CTR:
82c4522469SChandan Kumar 		return PERF_REG_POWERPC_CTR;
83c4522469SChandan Kumar 	case UNW_PPC64_XER:
84c4522469SChandan Kumar 		return PERF_REG_POWERPC_XER;
85c4522469SChandan Kumar 	case UNW_PPC64_NIP:
86c4522469SChandan Kumar 		return PERF_REG_POWERPC_NIP;
87c4522469SChandan Kumar 	default:
88c4522469SChandan Kumar 		pr_err("unwind: invalid reg id %d\n", regnum);
89c4522469SChandan Kumar 		return -EINVAL;
90c4522469SChandan Kumar 	}
91c4522469SChandan Kumar 	return -EINVAL;
92c4522469SChandan Kumar }
93