unwind.c 966 B

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