linux/tools/perf/arch/powerpc/util/unwind-libunwind.c
<<
>>
Prefs
   1/*
   2 * Copyright 2016 Chandan Kumar, IBM Corporation.
   3 *
   4 * This program is free software; you can redistribute it and/or
   5 * modify it under the terms of the GNU General Public License
   6 * as published by the Free Software Foundation; either version
   7 * 2 of the License, or (at your option) any later version.
   8 */
   9
  10#include <errno.h>
  11#include <libunwind.h>
  12#include <asm/perf_regs.h>
  13#include "../../util/unwind.h"
  14#include "../../util/debug.h"
  15
  16int libunwind__arch_reg_id(int regnum)
  17{
  18        switch (regnum) {
  19        case UNW_PPC64_R0:
  20                return PERF_REG_POWERPC_R0;
  21        case UNW_PPC64_R1:
  22                return PERF_REG_POWERPC_R1;
  23        case UNW_PPC64_R2:
  24                return PERF_REG_POWERPC_R2;
  25        case UNW_PPC64_R3:
  26                return PERF_REG_POWERPC_R3;
  27        case UNW_PPC64_R4:
  28                return PERF_REG_POWERPC_R4;
  29        case UNW_PPC64_R5:
  30                return PERF_REG_POWERPC_R5;
  31        case UNW_PPC64_R6:
  32                return PERF_REG_POWERPC_R6;
  33        case UNW_PPC64_R7:
  34                return PERF_REG_POWERPC_R7;
  35        case UNW_PPC64_R8:
  36                return PERF_REG_POWERPC_R8;
  37        case UNW_PPC64_R9:
  38                return PERF_REG_POWERPC_R9;
  39        case UNW_PPC64_R10:
  40                return PERF_REG_POWERPC_R10;
  41        case UNW_PPC64_R11:
  42                return PERF_REG_POWERPC_R11;
  43        case UNW_PPC64_R12:
  44                return PERF_REG_POWERPC_R12;
  45        case UNW_PPC64_R13:
  46                return PERF_REG_POWERPC_R13;
  47        case UNW_PPC64_R14:
  48                return PERF_REG_POWERPC_R14;
  49        case UNW_PPC64_R15:
  50                return PERF_REG_POWERPC_R15;
  51        case UNW_PPC64_R16:
  52                return PERF_REG_POWERPC_R16;
  53        case UNW_PPC64_R17:
  54                return PERF_REG_POWERPC_R17;
  55        case UNW_PPC64_R18:
  56                return PERF_REG_POWERPC_R18;
  57        case UNW_PPC64_R19:
  58                return PERF_REG_POWERPC_R19;
  59        case UNW_PPC64_R20:
  60                return PERF_REG_POWERPC_R20;
  61        case UNW_PPC64_R21:
  62                return PERF_REG_POWERPC_R21;
  63        case UNW_PPC64_R22:
  64                return PERF_REG_POWERPC_R22;
  65        case UNW_PPC64_R23:
  66                return PERF_REG_POWERPC_R23;
  67        case UNW_PPC64_R24:
  68                return PERF_REG_POWERPC_R24;
  69        case UNW_PPC64_R25:
  70                return PERF_REG_POWERPC_R25;
  71        case UNW_PPC64_R26:
  72                return PERF_REG_POWERPC_R26;
  73        case UNW_PPC64_R27:
  74                return PERF_REG_POWERPC_R27;
  75        case UNW_PPC64_R28:
  76                return PERF_REG_POWERPC_R28;
  77        case UNW_PPC64_R29:
  78                return PERF_REG_POWERPC_R29;
  79        case UNW_PPC64_R30:
  80                return PERF_REG_POWERPC_R30;
  81        case UNW_PPC64_R31:
  82                return PERF_REG_POWERPC_R31;
  83        case UNW_PPC64_LR:
  84                return PERF_REG_POWERPC_LINK;
  85        case UNW_PPC64_CTR:
  86                return PERF_REG_POWERPC_CTR;
  87        case UNW_PPC64_XER:
  88                return PERF_REG_POWERPC_XER;
  89        case UNW_PPC64_NIP:
  90                return PERF_REG_POWERPC_NIP;
  91        default:
  92                pr_err("unwind: invalid reg id %d\n", regnum);
  93                return -EINVAL;
  94        }
  95        return -EINVAL;
  96}
  97