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