18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 28c2ecf20Sopenharmony_ci 38c2ecf20Sopenharmony_ci#include <errno.h> 48c2ecf20Sopenharmony_ci#include <libunwind.h> 58c2ecf20Sopenharmony_ci#include "perf_regs.h" 68c2ecf20Sopenharmony_ci#include "../../util/unwind.h" 78c2ecf20Sopenharmony_ci#include "../../util/debug.h" 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_ciint libunwind__arch_reg_id(int regnum) 108c2ecf20Sopenharmony_ci{ 118c2ecf20Sopenharmony_ci switch (regnum) { 128c2ecf20Sopenharmony_ci case UNW_ARM_R0: 138c2ecf20Sopenharmony_ci return PERF_REG_ARM_R0; 148c2ecf20Sopenharmony_ci case UNW_ARM_R1: 158c2ecf20Sopenharmony_ci return PERF_REG_ARM_R1; 168c2ecf20Sopenharmony_ci case UNW_ARM_R2: 178c2ecf20Sopenharmony_ci return PERF_REG_ARM_R2; 188c2ecf20Sopenharmony_ci case UNW_ARM_R3: 198c2ecf20Sopenharmony_ci return PERF_REG_ARM_R3; 208c2ecf20Sopenharmony_ci case UNW_ARM_R4: 218c2ecf20Sopenharmony_ci return PERF_REG_ARM_R4; 228c2ecf20Sopenharmony_ci case UNW_ARM_R5: 238c2ecf20Sopenharmony_ci return PERF_REG_ARM_R5; 248c2ecf20Sopenharmony_ci case UNW_ARM_R6: 258c2ecf20Sopenharmony_ci return PERF_REG_ARM_R6; 268c2ecf20Sopenharmony_ci case UNW_ARM_R7: 278c2ecf20Sopenharmony_ci return PERF_REG_ARM_R7; 288c2ecf20Sopenharmony_ci case UNW_ARM_R8: 298c2ecf20Sopenharmony_ci return PERF_REG_ARM_R8; 308c2ecf20Sopenharmony_ci case UNW_ARM_R9: 318c2ecf20Sopenharmony_ci return PERF_REG_ARM_R9; 328c2ecf20Sopenharmony_ci case UNW_ARM_R10: 338c2ecf20Sopenharmony_ci return PERF_REG_ARM_R10; 348c2ecf20Sopenharmony_ci case UNW_ARM_R11: 358c2ecf20Sopenharmony_ci return PERF_REG_ARM_FP; 368c2ecf20Sopenharmony_ci case UNW_ARM_R12: 378c2ecf20Sopenharmony_ci return PERF_REG_ARM_IP; 388c2ecf20Sopenharmony_ci case UNW_ARM_R13: 398c2ecf20Sopenharmony_ci return PERF_REG_ARM_SP; 408c2ecf20Sopenharmony_ci case UNW_ARM_R14: 418c2ecf20Sopenharmony_ci return PERF_REG_ARM_LR; 428c2ecf20Sopenharmony_ci case UNW_ARM_R15: 438c2ecf20Sopenharmony_ci return PERF_REG_ARM_PC; 448c2ecf20Sopenharmony_ci default: 458c2ecf20Sopenharmony_ci pr_err("unwind: invalid reg id %d\n", regnum); 468c2ecf20Sopenharmony_ci return -EINVAL; 478c2ecf20Sopenharmony_ci } 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_ci return -EINVAL; 508c2ecf20Sopenharmony_ci} 51