Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / tools / perf / arch / arm64 / util / unwind-libunwind.c
diff --git a/kernel/tools/perf/arch/arm64/util/unwind-libunwind.c b/kernel/tools/perf/arch/arm64/util/unwind-libunwind.c
new file mode 100644 (file)
index 0000000..a87afa9
--- /dev/null
@@ -0,0 +1,83 @@
+
+#include <errno.h>
+#include <libunwind.h>
+#include "perf_regs.h"
+#include "../../util/unwind.h"
+#include "../../util/debug.h"
+
+int libunwind__arch_reg_id(int regnum)
+{
+       switch (regnum) {
+       case UNW_AARCH64_X0:
+               return PERF_REG_ARM64_X0;
+       case UNW_AARCH64_X1:
+               return PERF_REG_ARM64_X1;
+       case UNW_AARCH64_X2:
+               return PERF_REG_ARM64_X2;
+       case UNW_AARCH64_X3:
+               return PERF_REG_ARM64_X3;
+       case UNW_AARCH64_X4:
+               return PERF_REG_ARM64_X4;
+       case UNW_AARCH64_X5:
+               return PERF_REG_ARM64_X5;
+       case UNW_AARCH64_X6:
+               return PERF_REG_ARM64_X6;
+       case UNW_AARCH64_X7:
+               return PERF_REG_ARM64_X7;
+       case UNW_AARCH64_X8:
+               return PERF_REG_ARM64_X8;
+       case UNW_AARCH64_X9:
+               return PERF_REG_ARM64_X9;
+       case UNW_AARCH64_X10:
+               return PERF_REG_ARM64_X10;
+       case UNW_AARCH64_X11:
+               return PERF_REG_ARM64_X11;
+       case UNW_AARCH64_X12:
+               return PERF_REG_ARM64_X12;
+       case UNW_AARCH64_X13:
+               return PERF_REG_ARM64_X13;
+       case UNW_AARCH64_X14:
+               return PERF_REG_ARM64_X14;
+       case UNW_AARCH64_X15:
+               return PERF_REG_ARM64_X15;
+       case UNW_AARCH64_X16:
+               return PERF_REG_ARM64_X16;
+       case UNW_AARCH64_X17:
+               return PERF_REG_ARM64_X17;
+       case UNW_AARCH64_X18:
+               return PERF_REG_ARM64_X18;
+       case UNW_AARCH64_X19:
+               return PERF_REG_ARM64_X19;
+       case UNW_AARCH64_X20:
+               return PERF_REG_ARM64_X20;
+       case UNW_AARCH64_X21:
+               return PERF_REG_ARM64_X21;
+       case UNW_AARCH64_X22:
+               return PERF_REG_ARM64_X22;
+       case UNW_AARCH64_X23:
+               return PERF_REG_ARM64_X23;
+       case UNW_AARCH64_X24:
+               return PERF_REG_ARM64_X24;
+       case UNW_AARCH64_X25:
+               return PERF_REG_ARM64_X25;
+       case UNW_AARCH64_X26:
+               return PERF_REG_ARM64_X26;
+       case UNW_AARCH64_X27:
+               return PERF_REG_ARM64_X27;
+       case UNW_AARCH64_X28:
+               return PERF_REG_ARM64_X28;
+       case UNW_AARCH64_X29:
+               return PERF_REG_ARM64_X29;
+       case UNW_AARCH64_X30:
+               return PERF_REG_ARM64_LR;
+       case UNW_AARCH64_SP:
+               return PERF_REG_ARM64_SP;
+       case UNW_AARCH64_PC:
+               return PERF_REG_ARM64_PC;
+       default:
+               pr_err("unwind: invalid reg id %d\n", regnum);
+               return -EINVAL;
+       }
+
+       return -EINVAL;
+}