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