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_LOONGARCH64_R1: 13 return PERF_REG_LOONGARCH_R1; 14 case UNW_LOONGARCH64_R2: 15 return PERF_REG_LOONGARCH_R2; 16 case UNW_LOONGARCH64_R3: 17 return PERF_REG_LOONGARCH_R3; 18 case UNW_LOONGARCH64_R4: 19 return PERF_REG_LOONGARCH_R4; 20 case UNW_LOONGARCH64_R5: 21 return PERF_REG_LOONGARCH_R5; 22 case UNW_LOONGARCH64_R6: 23 return PERF_REG_LOONGARCH_R6; 24 case UNW_LOONGARCH64_R7: 25 return PERF_REG_LOONGARCH_R7; 26 case UNW_LOONGARCH64_R8: 27 return PERF_REG_LOONGARCH_R8; 28 case UNW_LOONGARCH64_R9: 29 return PERF_REG_LOONGARCH_R9; 30 case UNW_LOONGARCH64_R10: 31 return PERF_REG_LOONGARCH_R10; 32 case UNW_LOONGARCH64_R11: 33 return PERF_REG_LOONGARCH_R11; 34 case UNW_LOONGARCH64_R12: 35 return PERF_REG_LOONGARCH_R12; 36 case UNW_LOONGARCH64_R13: 37 return PERF_REG_LOONGARCH_R13; 38 case UNW_LOONGARCH64_R14: 39 return PERF_REG_LOONGARCH_R14; 40 case UNW_LOONGARCH64_R15: 41 return PERF_REG_LOONGARCH_R15; 42 case UNW_LOONGARCH64_R16: 43 return PERF_REG_LOONGARCH_R16; 44 case UNW_LOONGARCH64_R17: 45 return PERF_REG_LOONGARCH_R17; 46 case UNW_LOONGARCH64_R18: 47 return PERF_REG_LOONGARCH_R18; 48 case UNW_LOONGARCH64_R19: 49 return PERF_REG_LOONGARCH_R19; 50 case UNW_LOONGARCH64_R20: 51 return PERF_REG_LOONGARCH_R20; 52 case UNW_LOONGARCH64_R21: 53 return PERF_REG_LOONGARCH_R21; 54 case UNW_LOONGARCH64_R22: 55 return PERF_REG_LOONGARCH_R22; 56 case UNW_LOONGARCH64_R23: 57 return PERF_REG_LOONGARCH_R23; 58 case UNW_LOONGARCH64_R24: 59 return PERF_REG_LOONGARCH_R24; 60 case UNW_LOONGARCH64_R25: 61 return PERF_REG_LOONGARCH_R25; 62 case UNW_LOONGARCH64_R26: 63 return PERF_REG_LOONGARCH_R26; 64 case UNW_LOONGARCH64_R27: 65 return PERF_REG_LOONGARCH_R27; 66 case UNW_LOONGARCH64_R28: 67 return PERF_REG_LOONGARCH_R28; 68 case UNW_LOONGARCH64_R29: 69 return PERF_REG_LOONGARCH_R29; 70 case UNW_LOONGARCH64_R30: 71 return PERF_REG_LOONGARCH_R30; 72 case UNW_LOONGARCH64_R31: 73 return PERF_REG_LOONGARCH_R31; 74 case UNW_LOONGARCH64_PC: 75 return PERF_REG_LOONGARCH_PC; 76 default: 77 pr_err("unwind: invalid reg id %d\n", regnum); 78 return -EINVAL; 79 } 80 81 return -EINVAL; 82 } 83