xref: /linux/tools/perf/arch/arm/util/unwind-libunwind.c (revision 3932b9ca55b0be314a36d3e84faff3e823c081f5)
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_ARM_R0:
11 		return PERF_REG_ARM_R0;
12 	case UNW_ARM_R1:
13 		return PERF_REG_ARM_R1;
14 	case UNW_ARM_R2:
15 		return PERF_REG_ARM_R2;
16 	case UNW_ARM_R3:
17 		return PERF_REG_ARM_R3;
18 	case UNW_ARM_R4:
19 		return PERF_REG_ARM_R4;
20 	case UNW_ARM_R5:
21 		return PERF_REG_ARM_R5;
22 	case UNW_ARM_R6:
23 		return PERF_REG_ARM_R6;
24 	case UNW_ARM_R7:
25 		return PERF_REG_ARM_R7;
26 	case UNW_ARM_R8:
27 		return PERF_REG_ARM_R8;
28 	case UNW_ARM_R9:
29 		return PERF_REG_ARM_R9;
30 	case UNW_ARM_R10:
31 		return PERF_REG_ARM_R10;
32 	case UNW_ARM_R11:
33 		return PERF_REG_ARM_FP;
34 	case UNW_ARM_R12:
35 		return PERF_REG_ARM_IP;
36 	case UNW_ARM_R13:
37 		return PERF_REG_ARM_SP;
38 	case UNW_ARM_R14:
39 		return PERF_REG_ARM_LR;
40 	case UNW_ARM_R15:
41 		return PERF_REG_ARM_PC;
42 	default:
43 		pr_err("unwind: invalid reg id %d\n", regnum);
44 		return -EINVAL;
45 	}
46 
47 	return -EINVAL;
48 }
49