hwcache.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /*
  2. * Copyright (c) 2006-2023, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2023-02-25 GuEe-GUI the first version
  9. */
  10. #ifndef __HWCACHE_H__
  11. #define __HWCACHE_H__
  12. #include <rthw.h>
  13. #include <rtthread.h>
  14. #include <drivers/ofw.h>
  15. struct rt_hwcache_ops
  16. {
  17. const char *name;
  18. void (*enable)(void);
  19. void (*disable)(void);
  20. rt_base_t (*status)(void);
  21. void (*flush)(void *vaddr, rt_size_t size);
  22. void (*invalidate)(void *vaddr, rt_size_t size);
  23. };
  24. extern struct rt_hwcache_ops *rt_dm_cpu_dcache_ops;
  25. extern struct rt_hwcache_ops *rt_dm_cpu_icache_ops;
  26. #define RT_HWCACHE_OFW_DECLARE(name, ids, handler) RT_OFW_STUB_EXPORT(name, ids, hwcache, handler)
  27. void rt_hwcache_icache_enable(void);
  28. void rt_hwcache_icache_disable(void);
  29. rt_base_t rt_hwcache_icache_status(void);
  30. void rt_hwcache_icache_ops(int ops, void *addr, int size);
  31. void rt_hwcache_dcache_enable(void);
  32. void rt_hwcache_dcache_disable(void);
  33. rt_base_t rt_hwcache_dcache_status(void);
  34. void rt_hwcache_dcache_ops(int ops, void *addr, int size);
  35. rt_err_t rt_hwcache_init(void);
  36. #endif /* __HWCACHE_H__ */