12#ifndef ZEPHYR_INCLUDE_ARCH_CACHE_H_
13#define ZEPHYR_INCLUDE_ARCH_CACHE_H_
22#if defined(CONFIG_ARM64)
24#elif defined(CONFIG_XTENSA)
28#if defined(CONFIG_DCACHE)
35extern void arch_dcache_enable(
void);
37#define cache_data_enable arch_dcache_enable
44extern void arch_dcache_disable(
void);
46#define cache_data_disable arch_dcache_disable
57extern int arch_dcache_flush_all(
void);
59#define cache_data_flush_all arch_dcache_flush_all
70extern int arch_dcache_invd_all(
void);
72#define cache_data_invd_all arch_dcache_invd_all
83extern int arch_dcache_flush_and_invd_all(
void);
85#define cache_data_flush_and_invd_all arch_dcache_flush_and_invd_all
99extern int arch_dcache_flush_range(
void *addr,
size_t size);
101#define cache_data_flush_range(addr, size) arch_dcache_flush_range(addr, size)
115extern int arch_dcache_invd_range(
void *addr,
size_t size);
117#define cache_data_invd_range(addr, size) arch_dcache_invd_range(addr, size)
132extern int arch_dcache_flush_and_invd_range(
void *addr,
size_t size);
134#define cache_data_flush_and_invd_range(addr, size) \
135 arch_dcache_flush_and_invd_range(addr, size)
137#if defined(CONFIG_DCACHE_LINE_SIZE_DETECT)
152extern size_t arch_dcache_line_size_get(
void);
154#define cache_data_line_size_get arch_dcache_line_size_get
160#if defined(CONFIG_ICACHE)
167extern void arch_icache_enable(
void);
169#define cache_instr_enable arch_icache_enable
176extern void arch_icache_disable(
void);
178#define cache_instr_disable arch_icache_disable
189extern int arch_icache_flush_all(
void);
191#define cache_instr_flush_all arch_icache_flush_all
202extern int arch_icache_invd_all(
void);
204#define cache_instr_invd_all arch_icache_invd_all
215extern int arch_icache_flush_and_invd_all(
void);
217#define cache_instr_flush_and_invd_all arch_icache_flush_and_invd_all
231extern int arch_icache_flush_range(
void *addr,
size_t size);
233#define cache_instr_flush_range(addr, size) arch_icache_flush_range(addr, size)
247extern int arch_icache_invd_range(
void *addr,
size_t size);
249#define cache_instr_invd_range(addr, size) arch_icache_invd_range(addr, size)
263extern int arch_icache_flush_and_invd_range(
void *addr,
size_t size);
265#define cache_instr_flush_and_invd_range(addr, size) \
266 arch_icache_flush_and_invd_range(addr, size)
268#if defined(CONFIG_ICACHE_LINE_SIZE_DETECT)
284extern size_t arch_icache_line_size_get(
void);
286#define cache_instr_line_size_get arch_icache_line_size_get