cache_ops.c 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /*
  2. * Copyright (c) 2006-2021, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2021-12-28 GuEe-GUI the first version
  9. */
  10. #include <rthw.h>
  11. #include <rtdef.h>
  12. void __asm_flush_dcache_all(void);
  13. void __asm_invalidate_dcache_all(void);
  14. void __asm_flush_dcache_range(unsigned long start, unsigned long end);
  15. void __asm_invalidate_dcache_range(unsigned long start, unsigned long end);
  16. void __asm_invalidate_icache_all(void);
  17. void __asm_invalidate_icache_range(unsigned long start, unsigned long end);
  18. void rt_hw_dcache_flush_all(void)
  19. {
  20. __asm_flush_dcache_all();
  21. }
  22. void rt_hw_dcache_invalidate_all(void)
  23. {
  24. __asm_invalidate_dcache_all();
  25. }
  26. void rt_hw_dcache_flush_range(unsigned long start_addr, unsigned long size)
  27. {
  28. __asm_flush_dcache_range(start_addr, start_addr + size);
  29. }
  30. void rt_hw_dcache_invalidate_range(unsigned long start_addr,unsigned long size)
  31. {
  32. __asm_invalidate_dcache_range(start_addr, start_addr + size);
  33. }
  34. void rt_hw_icache_invalidate_all()
  35. {
  36. __asm_invalidate_icache_all();
  37. }
  38. void rt_hw_icache_invalidate_range(unsigned long start_addr, int size)
  39. {
  40. __asm_invalidate_icache_range(start_addr, start_addr + size);
  41. }
  42. void rt_hw_cpu_icache_ops(int ops, void *addr, int size)
  43. {
  44. if (ops == RT_HW_CACHE_INVALIDATE)
  45. {
  46. rt_hw_icache_invalidate_range((unsigned long)addr, size);
  47. }
  48. }
  49. void rt_hw_cpu_dcache_ops(int ops, void *addr, int size)
  50. {
  51. if (ops == RT_HW_CACHE_FLUSH)
  52. {
  53. rt_hw_dcache_flush_range((unsigned long)addr, size);
  54. }
  55. else if (ops == RT_HW_CACHE_INVALIDATE)
  56. {
  57. rt_hw_dcache_invalidate_range((unsigned long)addr, size);
  58. }
  59. }