riscv: use invalidate/flush_*cache_range functions in cache.c
authorLukas Auer <lukas.auer@aisec.fraunhofer.de>
Fri, 4 Jan 2019 00:37:30 +0000 (01:37 +0100)
committerAndes <uboot@andestech.com>
Tue, 15 Jan 2019 01:36:31 +0000 (09:36 +0800)
The flush_cache() function in lib/cache.c ignores its arguments and
flushes the complete data and instruction caches. Use the
invalidate/flush_*cache_range() functions instead to only flush the
requested memory region.

This patch does not change the current behavior of U-Boot, since the
implementation of the invalidate/flush_*cache_range() functions flush
the complete data and instruction caches. It is in preparation for CPUs
with the necessary functionality for flushing a selectable memory range.

Signed-off-by: Lukas Auer <lukas.auer@aisec.fraunhofer.de>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
arch/riscv/lib/cache.c

index 78b19da2c5d145c3e6f18793a458efddf8d69500..5437a122a100480881b3c66f8e1c24cf12eb3a58 100644 (file)
@@ -40,8 +40,8 @@ void cache_flush(void)
 
 void flush_cache(unsigned long addr, unsigned long size)
 {
-       invalidate_icache_all();
-       flush_dcache_all();
+       invalidate_icache_range(addr, addr + size);
+       flush_dcache_range(addr, addr + size);
 }
 
 __weak void icache_enable(void)