0001
0002
0003
0004
0005
0006 #include <errno.h>
0007 #include <libunwind.h>
0008 #include <asm/perf_regs.h>
0009 #include "../../util/unwind.h"
0010 #include "../../util/debug.h"
0011
0012 int libunwind__arch_reg_id(int regnum)
0013 {
0014 switch (regnum) {
0015 case UNW_PPC64_R0:
0016 return PERF_REG_POWERPC_R0;
0017 case UNW_PPC64_R1:
0018 return PERF_REG_POWERPC_R1;
0019 case UNW_PPC64_R2:
0020 return PERF_REG_POWERPC_R2;
0021 case UNW_PPC64_R3:
0022 return PERF_REG_POWERPC_R3;
0023 case UNW_PPC64_R4:
0024 return PERF_REG_POWERPC_R4;
0025 case UNW_PPC64_R5:
0026 return PERF_REG_POWERPC_R5;
0027 case UNW_PPC64_R6:
0028 return PERF_REG_POWERPC_R6;
0029 case UNW_PPC64_R7:
0030 return PERF_REG_POWERPC_R7;
0031 case UNW_PPC64_R8:
0032 return PERF_REG_POWERPC_R8;
0033 case UNW_PPC64_R9:
0034 return PERF_REG_POWERPC_R9;
0035 case UNW_PPC64_R10:
0036 return PERF_REG_POWERPC_R10;
0037 case UNW_PPC64_R11:
0038 return PERF_REG_POWERPC_R11;
0039 case UNW_PPC64_R12:
0040 return PERF_REG_POWERPC_R12;
0041 case UNW_PPC64_R13:
0042 return PERF_REG_POWERPC_R13;
0043 case UNW_PPC64_R14:
0044 return PERF_REG_POWERPC_R14;
0045 case UNW_PPC64_R15:
0046 return PERF_REG_POWERPC_R15;
0047 case UNW_PPC64_R16:
0048 return PERF_REG_POWERPC_R16;
0049 case UNW_PPC64_R17:
0050 return PERF_REG_POWERPC_R17;
0051 case UNW_PPC64_R18:
0052 return PERF_REG_POWERPC_R18;
0053 case UNW_PPC64_R19:
0054 return PERF_REG_POWERPC_R19;
0055 case UNW_PPC64_R20:
0056 return PERF_REG_POWERPC_R20;
0057 case UNW_PPC64_R21:
0058 return PERF_REG_POWERPC_R21;
0059 case UNW_PPC64_R22:
0060 return PERF_REG_POWERPC_R22;
0061 case UNW_PPC64_R23:
0062 return PERF_REG_POWERPC_R23;
0063 case UNW_PPC64_R24:
0064 return PERF_REG_POWERPC_R24;
0065 case UNW_PPC64_R25:
0066 return PERF_REG_POWERPC_R25;
0067 case UNW_PPC64_R26:
0068 return PERF_REG_POWERPC_R26;
0069 case UNW_PPC64_R27:
0070 return PERF_REG_POWERPC_R27;
0071 case UNW_PPC64_R28:
0072 return PERF_REG_POWERPC_R28;
0073 case UNW_PPC64_R29:
0074 return PERF_REG_POWERPC_R29;
0075 case UNW_PPC64_R30:
0076 return PERF_REG_POWERPC_R30;
0077 case UNW_PPC64_R31:
0078 return PERF_REG_POWERPC_R31;
0079 case UNW_PPC64_LR:
0080 return PERF_REG_POWERPC_LINK;
0081 case UNW_PPC64_CTR:
0082 return PERF_REG_POWERPC_CTR;
0083 case UNW_PPC64_XER:
0084 return PERF_REG_POWERPC_XER;
0085 case UNW_PPC64_NIP:
0086 return PERF_REG_POWERPC_NIP;
0087 default:
0088 pr_err("unwind: invalid reg id %d\n", regnum);
0089 return -EINVAL;
0090 }
0091 return -EINVAL;
0092 }