1181111Sdes// SPDX-License-Identifier: GPL-2.0-or-later 276259Sgreen/* 376259Sgreen * Copyright 2016 Chandan Kumar, IBM Corporation. 476259Sgreen */ 576259Sgreen 676259Sgreen#include <errno.h> 776259Sgreen#include <libunwind.h> 876259Sgreen#include <asm/perf_regs.h> 976259Sgreen#include "../../util/unwind.h" 1076259Sgreen#include "../../util/debug.h" 1176259Sgreen 1276259Sgreenint libunwind__arch_reg_id(int regnum) 1376259Sgreen{ 1476259Sgreen switch (regnum) { 1576259Sgreen case UNW_PPC64_R0: 1676259Sgreen return PERF_REG_POWERPC_R0; 1776259Sgreen case UNW_PPC64_R1: 1876259Sgreen return PERF_REG_POWERPC_R1; 1976259Sgreen case UNW_PPC64_R2: 2076259Sgreen return PERF_REG_POWERPC_R2; 2176259Sgreen case UNW_PPC64_R3: 2276259Sgreen return PERF_REG_POWERPC_R3; 2376259Sgreen case UNW_PPC64_R4: 2476259Sgreen return PERF_REG_POWERPC_R4; 2576259Sgreen case UNW_PPC64_R5: 2676259Sgreen return PERF_REG_POWERPC_R5; 2776259Sgreen case UNW_PPC64_R6: 2876259Sgreen return PERF_REG_POWERPC_R6; 2976259Sgreen case UNW_PPC64_R7: 3092555Sdes return PERF_REG_POWERPC_R7; 3192555Sdes case UNW_PPC64_R8: 32181111Sdes return PERF_REG_POWERPC_R8; 3392555Sdes case UNW_PPC64_R9: 3476259Sgreen return PERF_REG_POWERPC_R9; 3576259Sgreen case UNW_PPC64_R10: 36 return PERF_REG_POWERPC_R10; 37 case UNW_PPC64_R11: 38 return PERF_REG_POWERPC_R11; 39 case UNW_PPC64_R12: 40 return PERF_REG_POWERPC_R12; 41 case UNW_PPC64_R13: 42 return PERF_REG_POWERPC_R13; 43 case UNW_PPC64_R14: 44 return PERF_REG_POWERPC_R14; 45 case UNW_PPC64_R15: 46 return PERF_REG_POWERPC_R15; 47 case UNW_PPC64_R16: 48 return PERF_REG_POWERPC_R16; 49 case UNW_PPC64_R17: 50 return PERF_REG_POWERPC_R17; 51 case UNW_PPC64_R18: 52 return PERF_REG_POWERPC_R18; 53 case UNW_PPC64_R19: 54 return PERF_REG_POWERPC_R19; 55 case UNW_PPC64_R20: 56 return PERF_REG_POWERPC_R20; 57 case UNW_PPC64_R21: 58 return PERF_REG_POWERPC_R21; 59 case UNW_PPC64_R22: 60 return PERF_REG_POWERPC_R22; 61 case UNW_PPC64_R23: 62 return PERF_REG_POWERPC_R23; 63 case UNW_PPC64_R24: 64 return PERF_REG_POWERPC_R24; 65 case UNW_PPC64_R25: 66 return PERF_REG_POWERPC_R25; 67 case UNW_PPC64_R26: 68 return PERF_REG_POWERPC_R26; 69 case UNW_PPC64_R27: 70 return PERF_REG_POWERPC_R27; 71 case UNW_PPC64_R28: 72 return PERF_REG_POWERPC_R28; 73 case UNW_PPC64_R29: 74 return PERF_REG_POWERPC_R29; 75 case UNW_PPC64_R30: 76 return PERF_REG_POWERPC_R30; 77 case UNW_PPC64_R31: 78 return PERF_REG_POWERPC_R31; 79 case UNW_PPC64_LR: 80 return PERF_REG_POWERPC_LINK; 81 case UNW_PPC64_CTR: 82 return PERF_REG_POWERPC_CTR; 83 case UNW_PPC64_XER: 84 return PERF_REG_POWERPC_XER; 85 case UNW_PPC64_NIP: 86 return PERF_REG_POWERPC_NIP; 87 default: 88 pr_err("unwind: invalid reg id %d\n", regnum); 89 return -EINVAL; 90 } 91 return -EINVAL; 92} 93