7#ifndef ZEPHYR_INCLUDE_CACHE_H_
8#define ZEPHYR_INCLUDE_CACHE_H_
27#define K_CACHE_WB BIT(0)
28#define K_CACHE_INVD BIT(1)
29#define K_CACHE_WB_INVD (K_CACHE_WB | K_CACHE_INVD)
31#if defined(CONFIG_HAS_EXTERNAL_CACHE)
35#if defined(CONFIG_DCACHE)
38extern void cache_data_enable(
void);
41extern void cache_data_disable(
void);
44extern int cache_data_all(
int op);
47extern int cache_data_range(
void *addr,
size_t size,
int op);
51#if defined(CONFIG_ICACHE)
54extern void cache_instr_enable(
void);
57extern void cache_instr_disable(
void);
60extern int cache_instr_all(
int op);
63extern int cache_instr_range(
void *addr,
size_t size,
int op);
71#if defined(CONFIG_DCACHE)
73#define cache_data_enable arch_dcache_enable
74#define cache_data_disable arch_dcache_disable
75#define cache_data_all(op) arch_dcache_all(op)
76#define cache_data_range(addr, size, op) arch_dcache_range(addr, size, op)
77#define cache_data_line_size_get arch_dcache_line_size_get
81#if defined(CONFIG_ICACHE)
83#define cache_instr_enable arch_icache_enable
84#define cache_instr_disable arch_icache_disable
85#define cache_instr_all(op) arch_icache_all(op)
86#define cache_instr_range(addr, size, op) arch_icache_range(addr, size, op)
87#define cache_instr_line_size_get arch_icache_line_size_get
94static inline int z_impl_sys_cache_data_all(
int op)
96#if defined(CONFIG_CACHE_MANAGEMENT) && defined(CONFIG_DCACHE)
97 return cache_data_all(op);
105static inline int z_impl_sys_cache_data_range(
void *addr,
size_t size,
int op)
107#if defined(CONFIG_CACHE_MANAGEMENT) && defined(CONFIG_DCACHE)
108 return cache_data_range(addr, size, op);
118static inline int z_impl_sys_cache_instr_all(
int op)
120#if defined(CONFIG_CACHE_MANAGEMENT) && defined(CONFIG_ICACHE)
121 return cache_instr_all(op);
129static inline int z_impl_sys_cache_instr_range(
void *addr,
size_t size,
int op)
131#if defined(CONFIG_CACHE_MANAGEMENT) && defined(CONFIG_ICACHE)
132 return cache_instr_range(addr, size, op);
141#ifdef CONFIG_LIBMETAL
142static inline void sys_cache_flush(
void *addr,
size_t size)
148#define CPU DT_PATH(cpus, cpu_0)
160#ifdef CONFIG_DCACHE_LINE_SIZE_DETECT
161 return cache_data_line_size_get();
162#elif (CONFIG_DCACHE_LINE_SIZE != 0)
163 return CONFIG_DCACHE_LINE_SIZE;
179#ifdef CONFIG_ICACHE_LINE_SIZE_DETECT
180 return cache_instr_line_size_get();
181#elif (CONFIG_ICACHE_LINE_SIZE != 0)
182 return CONFIG_ICACHE_LINE_SIZE;
188#include <syscalls/cache.h>
#define K_CACHE_WB
Definition: cache.h:27
int sys_cache_data_all(int op)
int sys_cache_instr_range(void *addr, size_t size, int op)
int sys_cache_instr_all(int op)
static size_t sys_cache_data_line_size_get(void)
Get the d-cache line size.
Definition: cache.h:158
int sys_cache_data_range(void *addr, size_t size, int op)
#define CPU
Definition: cache.h:148
static size_t sys_cache_instr_line_size_get(void)
Definition: cache.h:177
#define DT_PROP_OR(node_id, prop, default_value)
Like DT_PROP(), but with a fallback to default_value.
Definition: devicetree.h:760
#define ENOTSUP
Definition: errno.h:115