Linux-libre 5.4.47-gnu
[librecmc/linux-libre.git] / tools / perf / arch / arm / util / unwind-libunwind.c
1 // SPDX-License-Identifier: GPL-2.0
2
3 #include <errno.h>
4 #include <libunwind.h>
5 #include "perf_regs.h"
6 #include "../../util/unwind.h"
7 #include "../../util/debug.h"
8
9 int libunwind__arch_reg_id(int regnum)
10 {
11         switch (regnum) {
12         case UNW_ARM_R0:
13                 return PERF_REG_ARM_R0;
14         case UNW_ARM_R1:
15                 return PERF_REG_ARM_R1;
16         case UNW_ARM_R2:
17                 return PERF_REG_ARM_R2;
18         case UNW_ARM_R3:
19                 return PERF_REG_ARM_R3;
20         case UNW_ARM_R4:
21                 return PERF_REG_ARM_R4;
22         case UNW_ARM_R5:
23                 return PERF_REG_ARM_R5;
24         case UNW_ARM_R6:
25                 return PERF_REG_ARM_R6;
26         case UNW_ARM_R7:
27                 return PERF_REG_ARM_R7;
28         case UNW_ARM_R8:
29                 return PERF_REG_ARM_R8;
30         case UNW_ARM_R9:
31                 return PERF_REG_ARM_R9;
32         case UNW_ARM_R10:
33                 return PERF_REG_ARM_R10;
34         case UNW_ARM_R11:
35                 return PERF_REG_ARM_FP;
36         case UNW_ARM_R12:
37                 return PERF_REG_ARM_IP;
38         case UNW_ARM_R13:
39                 return PERF_REG_ARM_SP;
40         case UNW_ARM_R14:
41                 return PERF_REG_ARM_LR;
42         case UNW_ARM_R15:
43                 return PERF_REG_ARM_PC;
44         default:
45                 pr_err("unwind: invalid reg id %d\n", regnum);
46                 return -EINVAL;
47         }
48
49         return -EINVAL;
50 }