1 /* 2 * Copyright (c) 2006-2025 RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Change Logs: 7 * Date Author Notes 8 * 2022-11-09 RT-Thread The first version 9 */ 10 #ifndef __CACHE_H__ 11 #define __CACHE_H__ 12 13 #include <rtdef.h> 14 15 /** 16 * @brief These APIs may not be supported by a specified architecture 17 * But we have to include to all the cases to be 'general purpose' 18 */ 19 rt_hw_cpu_dcache_clean_local(void * addr,int size)20rt_always_inline void rt_hw_cpu_dcache_clean_local(void *addr, int size) 21 { 22 RT_UNUSED(addr); 23 RT_UNUSED(size); 24 } 25 rt_hw_cpu_dcache_invalidate_local(void * addr,int size)26rt_always_inline void rt_hw_cpu_dcache_invalidate_local(void *addr, int size) 27 { 28 RT_UNUSED(addr); 29 RT_UNUSED(size); 30 } 31 rt_hw_cpu_dcache_clean_and_invalidate_local(void * addr,int size)32rt_always_inline void rt_hw_cpu_dcache_clean_and_invalidate_local(void *addr, int size) 33 { 34 RT_UNUSED(addr); 35 RT_UNUSED(size); 36 } 37 rt_hw_cpu_dcache_clean_all_local(void)38rt_always_inline void rt_hw_cpu_dcache_clean_all_local(void) 39 { 40 } 41 rt_hw_cpu_dcache_invalidate_all_local(void)42rt_always_inline void rt_hw_cpu_dcache_invalidate_all_local(void) 43 { 44 } 45 rt_hw_cpu_dcache_clean_and_invalidate_all_local(void)46rt_always_inline void rt_hw_cpu_dcache_clean_and_invalidate_all_local(void) 47 { 48 } 49 50 /*use fence.i to invalidate all icache*/ rt_hw_cpu_icache_invalidate_local(void * addr,int size)51rt_always_inline void rt_hw_cpu_icache_invalidate_local(void *addr, int size) 52 { 53 54 } 55 /*use fence.i to invalidate all icache*/ rt_hw_cpu_icache_invalidate_all_local(void)56rt_always_inline void rt_hw_cpu_icache_invalidate_all_local(void) 57 { 58 59 } 60 61 /** 62 * @brief Multi-core 63 */ 64 65 #define rt_hw_cpu_dcache_clean rt_hw_cpu_dcache_clean_local 66 #define rt_hw_cpu_dcache_invalidate rt_hw_cpu_dcache_invalidate_local 67 #define rt_hw_cpu_dcache_clean_and_invalidate rt_hw_cpu_dcache_clean_and_invalidate_local 68 69 #define rt_hw_cpu_dcache_clean_all rt_hw_cpu_dcache_clean_all_local 70 #define rt_hw_cpu_dcache_invalidate_all rt_hw_cpu_dcache_invalidate_all_local 71 #define rt_hw_cpu_dcache_clean_and_invalidate_all rt_hw_cpu_dcache_clean_and_invalidate_all_local 72 73 #define rt_hw_cpu_icache_invalidate rt_hw_cpu_icache_invalidate_local 74 #define rt_hw_cpu_icache_invalidate_all rt_hw_cpu_icache_invalidate_all_local 75 76 #define rt_hw_icache_invalidate_all rt_hw_cpu_icache_invalidate_all 77 78 /** instruction barrier */ rt_hw_cpu_sync(void)79static inline void rt_hw_cpu_sync(void) 80 { 81 82 } 83 84 /** 85 * @brief local cpu icahce & dcache synchronization 86 * 87 * @param addr 88 * @param size 89 */ 90 void rt_hw_sync_cache_local(void *addr, int size); 91 92 #endif /* __CACHE_H__ */ 93