83 lines · c
1// SPDX-License-Identifier: GPL-2.02 3#include <errno.h>4#include <libunwind.h>5#include "perf_regs.h"6#include "../../util/unwind.h"7#include "util/debug.h"8 9int 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