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_MIPS_R1 ... UNW_MIPS_R25: 1362306a36Sopenharmony_ci return regnum - UNW_MIPS_R1 + PERF_REG_MIPS_R1; 1462306a36Sopenharmony_ci case UNW_MIPS_R28 ... UNW_MIPS_R31: 1562306a36Sopenharmony_ci return regnum - UNW_MIPS_R28 + PERF_REG_MIPS_R28; 1662306a36Sopenharmony_ci case UNW_MIPS_PC: 1762306a36Sopenharmony_ci return PERF_REG_MIPS_PC; 1862306a36Sopenharmony_ci default: 1962306a36Sopenharmony_ci pr_err("unwind: invalid reg id %d\n", regnum); 2062306a36Sopenharmony_ci return -EINVAL; 2162306a36Sopenharmony_ci } 2262306a36Sopenharmony_ci} 23