Will Deacon | 7495f37 | 2013-09-26 12:36:36 +0100 | [diff] [blame] | 1 | |
2 | #include <errno.h> | ||||
3 | #include <libunwind.h> | ||||
4 | #include "perf_regs.h" | ||||
5 | #include "../../util/unwind.h" | ||||
6 | |||||
7 | int unwind__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 | } |