b.liu | e958203 | 2025-04-17 19:18:16 +0800 | [diff] [blame^] | 1 | // SPDX-License-Identifier: GPL-2.0-or-later |
| 2 | /* |
| 3 | * Copyright 2016 Chandan Kumar, IBM Corporation. |
| 4 | */ |
| 5 | |
| 6 | #include <errno.h> |
| 7 | #include <libunwind.h> |
| 8 | #include <asm/perf_regs.h> |
| 9 | #include "../../util/unwind.h" |
| 10 | #include "../../util/debug.h" |
| 11 | |
| 12 | int libunwind__arch_reg_id(int regnum) |
| 13 | { |
| 14 | switch (regnum) { |
| 15 | case UNW_PPC64_R0: |
| 16 | return PERF_REG_POWERPC_R0; |
| 17 | case UNW_PPC64_R1: |
| 18 | return PERF_REG_POWERPC_R1; |
| 19 | case UNW_PPC64_R2: |
| 20 | return PERF_REG_POWERPC_R2; |
| 21 | case UNW_PPC64_R3: |
| 22 | return PERF_REG_POWERPC_R3; |
| 23 | case UNW_PPC64_R4: |
| 24 | return PERF_REG_POWERPC_R4; |
| 25 | case UNW_PPC64_R5: |
| 26 | return PERF_REG_POWERPC_R5; |
| 27 | case UNW_PPC64_R6: |
| 28 | return PERF_REG_POWERPC_R6; |
| 29 | case UNW_PPC64_R7: |
| 30 | return PERF_REG_POWERPC_R7; |
| 31 | case UNW_PPC64_R8: |
| 32 | return PERF_REG_POWERPC_R8; |
| 33 | case UNW_PPC64_R9: |
| 34 | return PERF_REG_POWERPC_R9; |
| 35 | 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 | } |