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 } 51