18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 28c2ecf20Sopenharmony_ci#include <errno.h> 38c2ecf20Sopenharmony_ci 48c2ecf20Sopenharmony_ci#ifndef REMOTE_UNWIND_LIBUNWIND 58c2ecf20Sopenharmony_ci#include <libunwind.h> 68c2ecf20Sopenharmony_ci#include "perf_regs.h" 78c2ecf20Sopenharmony_ci#include "../../util/unwind.h" 88c2ecf20Sopenharmony_ci#endif 98c2ecf20Sopenharmony_ci#include "../../util/debug.h" 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ciint LIBUNWIND__ARCH_REG_ID(int regnum) 128c2ecf20Sopenharmony_ci{ 138c2ecf20Sopenharmony_ci switch (regnum) { 148c2ecf20Sopenharmony_ci case UNW_AARCH64_X0: 158c2ecf20Sopenharmony_ci return PERF_REG_ARM64_X0; 168c2ecf20Sopenharmony_ci case UNW_AARCH64_X1: 178c2ecf20Sopenharmony_ci return PERF_REG_ARM64_X1; 188c2ecf20Sopenharmony_ci case UNW_AARCH64_X2: 198c2ecf20Sopenharmony_ci return PERF_REG_ARM64_X2; 208c2ecf20Sopenharmony_ci case UNW_AARCH64_X3: 218c2ecf20Sopenharmony_ci return PERF_REG_ARM64_X3; 228c2ecf20Sopenharmony_ci case UNW_AARCH64_X4: 238c2ecf20Sopenharmony_ci return PERF_REG_ARM64_X4; 248c2ecf20Sopenharmony_ci case UNW_AARCH64_X5: 258c2ecf20Sopenharmony_ci return PERF_REG_ARM64_X5; 268c2ecf20Sopenharmony_ci case UNW_AARCH64_X6: 278c2ecf20Sopenharmony_ci return PERF_REG_ARM64_X6; 288c2ecf20Sopenharmony_ci case UNW_AARCH64_X7: 298c2ecf20Sopenharmony_ci return PERF_REG_ARM64_X7; 308c2ecf20Sopenharmony_ci case UNW_AARCH64_X8: 318c2ecf20Sopenharmony_ci return PERF_REG_ARM64_X8; 328c2ecf20Sopenharmony_ci case UNW_AARCH64_X9: 338c2ecf20Sopenharmony_ci return PERF_REG_ARM64_X9; 348c2ecf20Sopenharmony_ci case UNW_AARCH64_X10: 358c2ecf20Sopenharmony_ci return PERF_REG_ARM64_X10; 368c2ecf20Sopenharmony_ci case UNW_AARCH64_X11: 378c2ecf20Sopenharmony_ci return PERF_REG_ARM64_X11; 388c2ecf20Sopenharmony_ci case UNW_AARCH64_X12: 398c2ecf20Sopenharmony_ci return PERF_REG_ARM64_X12; 408c2ecf20Sopenharmony_ci case UNW_AARCH64_X13: 418c2ecf20Sopenharmony_ci return PERF_REG_ARM64_X13; 428c2ecf20Sopenharmony_ci case UNW_AARCH64_X14: 438c2ecf20Sopenharmony_ci return PERF_REG_ARM64_X14; 448c2ecf20Sopenharmony_ci case UNW_AARCH64_X15: 458c2ecf20Sopenharmony_ci return PERF_REG_ARM64_X15; 468c2ecf20Sopenharmony_ci case UNW_AARCH64_X16: 478c2ecf20Sopenharmony_ci return PERF_REG_ARM64_X16; 488c2ecf20Sopenharmony_ci case UNW_AARCH64_X17: 498c2ecf20Sopenharmony_ci return PERF_REG_ARM64_X17; 508c2ecf20Sopenharmony_ci case UNW_AARCH64_X18: 518c2ecf20Sopenharmony_ci return PERF_REG_ARM64_X18; 528c2ecf20Sopenharmony_ci case UNW_AARCH64_X19: 538c2ecf20Sopenharmony_ci return PERF_REG_ARM64_X19; 548c2ecf20Sopenharmony_ci case UNW_AARCH64_X20: 558c2ecf20Sopenharmony_ci return PERF_REG_ARM64_X20; 568c2ecf20Sopenharmony_ci case UNW_AARCH64_X21: 578c2ecf20Sopenharmony_ci return PERF_REG_ARM64_X21; 588c2ecf20Sopenharmony_ci case UNW_AARCH64_X22: 598c2ecf20Sopenharmony_ci return PERF_REG_ARM64_X22; 608c2ecf20Sopenharmony_ci case UNW_AARCH64_X23: 618c2ecf20Sopenharmony_ci return PERF_REG_ARM64_X23; 628c2ecf20Sopenharmony_ci case UNW_AARCH64_X24: 638c2ecf20Sopenharmony_ci return PERF_REG_ARM64_X24; 648c2ecf20Sopenharmony_ci case UNW_AARCH64_X25: 658c2ecf20Sopenharmony_ci return PERF_REG_ARM64_X25; 668c2ecf20Sopenharmony_ci case UNW_AARCH64_X26: 678c2ecf20Sopenharmony_ci return PERF_REG_ARM64_X26; 688c2ecf20Sopenharmony_ci case UNW_AARCH64_X27: 698c2ecf20Sopenharmony_ci return PERF_REG_ARM64_X27; 708c2ecf20Sopenharmony_ci case UNW_AARCH64_X28: 718c2ecf20Sopenharmony_ci return PERF_REG_ARM64_X28; 728c2ecf20Sopenharmony_ci case UNW_AARCH64_X29: 738c2ecf20Sopenharmony_ci return PERF_REG_ARM64_X29; 748c2ecf20Sopenharmony_ci case UNW_AARCH64_X30: 758c2ecf20Sopenharmony_ci return PERF_REG_ARM64_LR; 768c2ecf20Sopenharmony_ci case UNW_AARCH64_SP: 778c2ecf20Sopenharmony_ci return PERF_REG_ARM64_SP; 788c2ecf20Sopenharmony_ci case UNW_AARCH64_PC: 798c2ecf20Sopenharmony_ci return PERF_REG_ARM64_PC; 808c2ecf20Sopenharmony_ci default: 818c2ecf20Sopenharmony_ci pr_err("unwind: invalid reg id %d\n", regnum); 828c2ecf20Sopenharmony_ci return -EINVAL; 838c2ecf20Sopenharmony_ci } 848c2ecf20Sopenharmony_ci 858c2ecf20Sopenharmony_ci return -EINVAL; 868c2ecf20Sopenharmony_ci} 87