unwind-libunwind.c 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. // SPDX-License-Identifier: GPL-2.0
  2. #include <errno.h>
  3. #include <libunwind.h>
  4. #include "perf_regs.h"
  5. #include "../../util/unwind.h"
  6. #include "../../util/debug.h"
  7. int libunwind__arch_reg_id(int regnum)
  8. {
  9. switch (regnum) {
  10. case UNW_ARM_R0:
  11. return PERF_REG_ARM_R0;
  12. case UNW_ARM_R1:
  13. return PERF_REG_ARM_R1;
  14. case UNW_ARM_R2:
  15. return PERF_REG_ARM_R2;
  16. case UNW_ARM_R3:
  17. return PERF_REG_ARM_R3;
  18. case UNW_ARM_R4:
  19. return PERF_REG_ARM_R4;
  20. case UNW_ARM_R5:
  21. return PERF_REG_ARM_R5;
  22. case UNW_ARM_R6:
  23. return PERF_REG_ARM_R6;
  24. case UNW_ARM_R7:
  25. return PERF_REG_ARM_R7;
  26. case UNW_ARM_R8:
  27. return PERF_REG_ARM_R8;
  28. case UNW_ARM_R9:
  29. return PERF_REG_ARM_R9;
  30. case UNW_ARM_R10:
  31. return PERF_REG_ARM_R10;
  32. case UNW_ARM_R11:
  33. return PERF_REG_ARM_FP;
  34. case UNW_ARM_R12:
  35. return PERF_REG_ARM_IP;
  36. case UNW_ARM_R13:
  37. return PERF_REG_ARM_SP;
  38. case UNW_ARM_R14:
  39. return PERF_REG_ARM_LR;
  40. case UNW_ARM_R15:
  41. return PERF_REG_ARM_PC;
  42. default:
  43. pr_err("unwind: invalid reg id %d\n", regnum);
  44. return -EINVAL;
  45. }
  46. return -EINVAL;
  47. }