1
0

cache.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. * 2019-03-29 quanzhao the first version
  9. * 2020-07-26 lizhirui porting to ls2k
  10. */
  11. #include <rthw.h>
  12. #include <rtdef.h>
  13. rt_inline rt_uint64_t rt_cpu_icache_line_size(void)
  14. {
  15. rt_uint64_t ctr;
  16. return 4 << (ctr & 0xF);
  17. }
  18. rt_inline rt_uint64_t rt_cpu_dcache_line_size(void)
  19. {
  20. rt_uint64_t ctr;
  21. return 4 << ((ctr >> 16) & 0xF);
  22. }
  23. void rt_hw_cpu_icache_invalidate(void *addr, int size)
  24. {
  25. rt_uint64_t line_size = rt_cpu_icache_line_size();
  26. rt_uint64_t start_addr = (rt_uint64_t)addr;
  27. rt_uint64_t end_addr = (rt_uint64_t) addr + size + line_size - 1;
  28. }
  29. void rt_hw_cpu_dcache_invalidate(void *addr, int size)
  30. {
  31. rt_uint64_t line_size = rt_cpu_dcache_line_size();
  32. rt_uint64_t start_addr = (rt_uint64_t)addr;
  33. rt_uint64_t end_addr = (rt_uint64_t) addr + size + line_size - 1;
  34. }
  35. void rt_hw_cpu_dcache_clean(void *addr, int size)
  36. {
  37. rt_uint64_t line_size = rt_cpu_dcache_line_size();
  38. rt_uint64_t start_addr = (rt_uint64_t)addr;
  39. rt_uint64_t end_addr = (rt_uint64_t) addr + size + line_size - 1;
  40. }
  41. void rt_hw_cpu_icache_ops(int ops, void *addr, int size)
  42. {
  43. if (ops == RT_HW_CACHE_INVALIDATE)
  44. rt_hw_cpu_icache_invalidate(addr, size);
  45. }
  46. void rt_hw_cpu_dcache_ops(int ops, void *addr, int size)
  47. {
  48. if (ops == RT_HW_CACHE_FLUSH)
  49. rt_hw_cpu_dcache_clean(addr, size);
  50. else if (ops == RT_HW_CACHE_INVALIDATE)
  51. rt_hw_cpu_dcache_invalidate(addr, size);
  52. }
  53. rt_base_t rt_hw_cpu_icache_status(void)
  54. {
  55. return 0;
  56. }
  57. rt_base_t rt_hw_cpu_dcache_status(void)
  58. {
  59. return 0;
  60. }