1 // SPDX-License-Identifier: GPL-2.0+
3 * Copyright (C) 2017 Andes Technology Corporation
4 * Rick Chen, Andes Technology Corporation <rick@andestech.com>
10 void invalidate_icache_all(void)
12 asm volatile ("fence.i" ::: "memory");
15 __weak void flush_dcache_all(void)
19 __weak void flush_dcache_range(unsigned long start, unsigned long end)
23 void invalidate_icache_range(unsigned long start, unsigned long end)
26 * RISC-V does not have an instruction for invalidating parts of the
27 * instruction cache. Invalidate all of it instead.
29 invalidate_icache_all();
32 __weak void invalidate_dcache_range(unsigned long start, unsigned long end)
36 void cache_flush(void)
38 invalidate_icache_all();
42 void flush_cache(unsigned long addr, unsigned long size)
44 invalidate_icache_range(addr, addr + size);
45 flush_dcache_range(addr, addr + size);
48 __weak void icache_enable(void)
52 __weak void icache_disable(void)
56 __weak int icache_status(void)
61 __weak void dcache_enable(void)
65 __weak void dcache_disable(void)
69 __weak int dcache_status(void)