/* * Copyright (c) 2015 Wind River Systems, Inc. * * SPDX-License-Identifier: Apache-2.0 */ #ifndef ZEPHYR_INCLUDE_CACHE_H_ #define ZEPHYR_INCLUDE_CACHE_H_ #include #ifdef __cplusplus extern "C" { #endif #define _sys_cache_flush_sig(x) void (x)(vaddr_t virt, size_t size) #if defined(CONFIG_CACHE_FLUSHING) #if defined(CONFIG_ARCH_CACHE_FLUSH_DETECT) typedef _sys_cache_flush_sig(_sys_cache_flush_t); extern _sys_cache_flush_t *sys_cache_flush; #else extern _sys_cache_flush_sig(sys_cache_flush); #endif #else /* * Provide NOP APIs for systems that do not have caches. * * An example is the Cortex-M chips. However, the functions are provided so * that code that need to manipulate caches can be written in an * architecture-agnostic manner. The functions do nothing. The cache line size * value is always 0. */ static inline _sys_cache_flush_sig(sys_cache_flush) { ARG_UNUSED(virt); ARG_UNUSED(size); /* do nothing */ } #endif /* CACHE_FLUSHING */ #if defined(CONFIG_CACHE_LINE_SIZE_DETECT) extern size_t sys_cache_line_size; #elif defined(CONFIG_CACHE_LINE_SIZE) #define sys_cache_line_size CONFIG_CACHE_LINE_SIZE #else #define sys_cache_line_size 0 #endif #ifdef __cplusplus } #endif #endif /* ZEPHYR_INCLUDE_CACHE_H_ */