162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci 362306a36Sopenharmony_ci#include <errno.h> 462306a36Sopenharmony_ci#include <libunwind.h> 562306a36Sopenharmony_ci#include "perf_regs.h" 662306a36Sopenharmony_ci#include "../../../util/unwind.h" 762306a36Sopenharmony_ci#include "../../../util/debug.h" 862306a36Sopenharmony_ci 962306a36Sopenharmony_ciint libunwind__arch_reg_id(int regnum) 1062306a36Sopenharmony_ci{ 1162306a36Sopenharmony_ci switch (regnum) { 1262306a36Sopenharmony_ci case UNW_ARM_R0: 1362306a36Sopenharmony_ci return PERF_REG_ARM_R0; 1462306a36Sopenharmony_ci case UNW_ARM_R1: 1562306a36Sopenharmony_ci return PERF_REG_ARM_R1; 1662306a36Sopenharmony_ci case UNW_ARM_R2: 1762306a36Sopenharmony_ci return PERF_REG_ARM_R2; 1862306a36Sopenharmony_ci case UNW_ARM_R3: 1962306a36Sopenharmony_ci return PERF_REG_ARM_R3; 2062306a36Sopenharmony_ci case UNW_ARM_R4: 2162306a36Sopenharmony_ci return PERF_REG_ARM_R4; 2262306a36Sopenharmony_ci case UNW_ARM_R5: 2362306a36Sopenharmony_ci return PERF_REG_ARM_R5; 2462306a36Sopenharmony_ci case UNW_ARM_R6: 2562306a36Sopenharmony_ci return PERF_REG_ARM_R6; 2662306a36Sopenharmony_ci case UNW_ARM_R7: 2762306a36Sopenharmony_ci return PERF_REG_ARM_R7; 2862306a36Sopenharmony_ci case UNW_ARM_R8: 2962306a36Sopenharmony_ci return PERF_REG_ARM_R8; 3062306a36Sopenharmony_ci case UNW_ARM_R9: 3162306a36Sopenharmony_ci return PERF_REG_ARM_R9; 3262306a36Sopenharmony_ci case UNW_ARM_R10: 3362306a36Sopenharmony_ci return PERF_REG_ARM_R10; 3462306a36Sopenharmony_ci case UNW_ARM_R11: 3562306a36Sopenharmony_ci return PERF_REG_ARM_FP; 3662306a36Sopenharmony_ci case UNW_ARM_R12: 3762306a36Sopenharmony_ci return PERF_REG_ARM_IP; 3862306a36Sopenharmony_ci case UNW_ARM_R13: 3962306a36Sopenharmony_ci return PERF_REG_ARM_SP; 4062306a36Sopenharmony_ci case UNW_ARM_R14: 4162306a36Sopenharmony_ci return PERF_REG_ARM_LR; 4262306a36Sopenharmony_ci case UNW_ARM_R15: 4362306a36Sopenharmony_ci return PERF_REG_ARM_PC; 4462306a36Sopenharmony_ci default: 4562306a36Sopenharmony_ci pr_err("unwind: invalid reg id %d\n", regnum); 4662306a36Sopenharmony_ci return -EINVAL; 4762306a36Sopenharmony_ci } 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ci return -EINVAL; 5062306a36Sopenharmony_ci} 51