0001
0002
0003 #include <errno.h>
0004 #include <libunwind.h>
0005 #include "perf_regs.h"
0006 #include "../../../util/unwind.h"
0007 #include "../../../util/debug.h"
0008
0009 int libunwind__arch_reg_id(int regnum)
0010 {
0011 switch (regnum) {
0012 case UNW_ARM_R0:
0013 return PERF_REG_ARM_R0;
0014 case UNW_ARM_R1:
0015 return PERF_REG_ARM_R1;
0016 case UNW_ARM_R2:
0017 return PERF_REG_ARM_R2;
0018 case UNW_ARM_R3:
0019 return PERF_REG_ARM_R3;
0020 case UNW_ARM_R4:
0021 return PERF_REG_ARM_R4;
0022 case UNW_ARM_R5:
0023 return PERF_REG_ARM_R5;
0024 case UNW_ARM_R6:
0025 return PERF_REG_ARM_R6;
0026 case UNW_ARM_R7:
0027 return PERF_REG_ARM_R7;
0028 case UNW_ARM_R8:
0029 return PERF_REG_ARM_R8;
0030 case UNW_ARM_R9:
0031 return PERF_REG_ARM_R9;
0032 case UNW_ARM_R10:
0033 return PERF_REG_ARM_R10;
0034 case UNW_ARM_R11:
0035 return PERF_REG_ARM_FP;
0036 case UNW_ARM_R12:
0037 return PERF_REG_ARM_IP;
0038 case UNW_ARM_R13:
0039 return PERF_REG_ARM_SP;
0040 case UNW_ARM_R14:
0041 return PERF_REG_ARM_LR;
0042 case UNW_ARM_R15:
0043 return PERF_REG_ARM_PC;
0044 default:
0045 pr_err("unwind: invalid reg id %d\n", regnum);
0046 return -EINVAL;
0047 }
0048
0049 return -EINVAL;
0050 }