lowlevel_spl.S 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /*
  2. * SPDX-License-Identifier: GPL-2.0+
  3. */
  4. #include <config.h>
  5. #include <linux/linkage.h>
  6. ENTRY(save_boot_params)
  7. b save_boot_params_ret
  8. ENDPROC(save_boot_params)
  9. /*
  10. * cache_inv - invalidate Cache line
  11. * r0 - dest
  12. */
  13. .global cache_inv
  14. .type cache_inv, %function
  15. cache_inv:
  16. stmfd sp!, {r1-r12}
  17. mcr p15, 0, r0, c7, c6, 1
  18. ldmfd sp!, {r1-r12}
  19. bx lr
  20. /*
  21. * flush_l1_v6 - l1 cache clean invalidate
  22. * r0 - dest
  23. */
  24. .global flush_l1_v6
  25. .type flush_l1_v6, %function
  26. flush_l1_v6:
  27. stmfd sp!, {r1-r12}
  28. mcr p15, 0, r0, c7, c10, 5 /* @ data memory barrier */
  29. mcr p15, 0, r0, c7, c14, 1 /* @ clean & invalidate D line */
  30. mcr p15, 0, r0, c7, c10, 4 /* @ data sync barrier */
  31. ldmfd sp!, {r1-r12}
  32. bx lr
  33. /*
  34. * flush_l1_v7 - l1 cache clean invalidate
  35. * r0 - dest
  36. */
  37. .global flush_l1_v7
  38. .type flush_l1_v7, %function
  39. flush_l1_v7:
  40. stmfd sp!, {r1-r12}
  41. dmb /* @data memory barrier */
  42. mcr p15, 0, r0, c7, c14, 1 /* @ clean & invalidate D line */
  43. dsb /* @data sync barrier */
  44. ldmfd sp!, {r1-r12}
  45. bx lr