1 
2 #include <errno.h>
3 #include <libunwind.h>
4 #include "perf_regs.h"
5 #include "../../util/unwind.h"
6 
7 int 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