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