regs_load.S 733 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #include <linux/linkage.h>
  3. .text
  4. .type perf_regs_load,%function
  5. #define STR_REG(r) str x##r, [x0, 8 * r]
  6. #define LDR_REG(r) ldr x##r, [x0, 8 * r]
  7. #define SP (8 * 31)
  8. #define PC (8 * 32)
  9. ENTRY(perf_regs_load)
  10. STR_REG(0)
  11. STR_REG(1)
  12. STR_REG(2)
  13. STR_REG(3)
  14. STR_REG(4)
  15. STR_REG(5)
  16. STR_REG(6)
  17. STR_REG(7)
  18. STR_REG(8)
  19. STR_REG(9)
  20. STR_REG(10)
  21. STR_REG(11)
  22. STR_REG(12)
  23. STR_REG(13)
  24. STR_REG(14)
  25. STR_REG(15)
  26. STR_REG(16)
  27. STR_REG(17)
  28. STR_REG(18)
  29. STR_REG(19)
  30. STR_REG(20)
  31. STR_REG(21)
  32. STR_REG(22)
  33. STR_REG(23)
  34. STR_REG(24)
  35. STR_REG(25)
  36. STR_REG(26)
  37. STR_REG(27)
  38. STR_REG(28)
  39. STR_REG(29)
  40. STR_REG(30)
  41. mov x1, sp
  42. str x1, [x0, #SP]
  43. str x30, [x0, #PC]
  44. LDR_REG(1)
  45. ret
  46. ENDPROC(perf_regs_load)