1// SPDX-License-Identifier: GPL-2.0
2#include <errno.h>
3
4#ifndef REMOTE_UNWIND_LIBUNWIND
5#include <libunwind.h>
6#include "perf_regs.h"
7#include "../../util/unwind.h"
8#endif
9#include "../../util/debug.h"
10
11int LIBUNWIND__ARCH_REG_ID(int regnum)
12{
13	switch (regnum) {
14	case UNW_AARCH64_X0:
15		return PERF_REG_ARM64_X0;
16	case UNW_AARCH64_X1:
17		return PERF_REG_ARM64_X1;
18	case UNW_AARCH64_X2:
19		return PERF_REG_ARM64_X2;
20	case UNW_AARCH64_X3:
21		return PERF_REG_ARM64_X3;
22	case UNW_AARCH64_X4:
23		return PERF_REG_ARM64_X4;
24	case UNW_AARCH64_X5:
25		return PERF_REG_ARM64_X5;
26	case UNW_AARCH64_X6:
27		return PERF_REG_ARM64_X6;
28	case UNW_AARCH64_X7:
29		return PERF_REG_ARM64_X7;
30	case UNW_AARCH64_X8:
31		return PERF_REG_ARM64_X8;
32	case UNW_AARCH64_X9:
33		return PERF_REG_ARM64_X9;
34	case UNW_AARCH64_X10:
35		return PERF_REG_ARM64_X10;
36	case UNW_AARCH64_X11:
37		return PERF_REG_ARM64_X11;
38	case UNW_AARCH64_X12:
39		return PERF_REG_ARM64_X12;
40	case UNW_AARCH64_X13:
41		return PERF_REG_ARM64_X13;
42	case UNW_AARCH64_X14:
43		return PERF_REG_ARM64_X14;
44	case UNW_AARCH64_X15:
45		return PERF_REG_ARM64_X15;
46	case UNW_AARCH64_X16:
47		return PERF_REG_ARM64_X16;
48	case UNW_AARCH64_X17:
49		return PERF_REG_ARM64_X17;
50	case UNW_AARCH64_X18:
51		return PERF_REG_ARM64_X18;
52	case UNW_AARCH64_X19:
53		return PERF_REG_ARM64_X19;
54	case UNW_AARCH64_X20:
55		return PERF_REG_ARM64_X20;
56	case UNW_AARCH64_X21:
57		return PERF_REG_ARM64_X21;
58	case UNW_AARCH64_X22:
59		return PERF_REG_ARM64_X22;
60	case UNW_AARCH64_X23:
61		return PERF_REG_ARM64_X23;
62	case UNW_AARCH64_X24:
63		return PERF_REG_ARM64_X24;
64	case UNW_AARCH64_X25:
65		return PERF_REG_ARM64_X25;
66	case UNW_AARCH64_X26:
67		return PERF_REG_ARM64_X26;
68	case UNW_AARCH64_X27:
69		return PERF_REG_ARM64_X27;
70	case UNW_AARCH64_X28:
71		return PERF_REG_ARM64_X28;
72	case UNW_AARCH64_X29:
73		return PERF_REG_ARM64_X29;
74	case UNW_AARCH64_X30:
75		return PERF_REG_ARM64_LR;
76	case UNW_AARCH64_SP:
77		return PERF_REG_ARM64_SP;
78	case UNW_AARCH64_PC:
79		return PERF_REG_ARM64_PC;
80	default:
81		pr_err("unwind: invalid reg id %d\n", regnum);
82		return -EINVAL;
83	}
84
85	return -EINVAL;
86}
87