arc/cache: really do flush_dcache_all() even if IOC exists
authorAlexey Brodkin <abrodkin@synopsys.com>
Sat, 16 Apr 2016 12:28:30 +0000 (15:28 +0300)
committerAlexey Brodkin <abrodkin@synopsys.com>
Thu, 21 Apr 2016 17:09:59 +0000 (20:09 +0300)
flush_dcache_all() is used in the very end of U-Boot self relocation
to write back all copied and then patched code and data to their
new location in the very end of available memory space.

Since that has nothing to do with IO (i.e. no external DMA happens
here) IOC won't help here and we need to write back data cache contents
manually.

Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
arch/arc/lib/cache.c

index 56988dda18dd3d230a91f77c12cbe25f1eb37f3f..d1fb66153771a607a56afde1bc67bbe95dab743d 100644 (file)
@@ -430,13 +430,10 @@ void invalidate_dcache_all(void)
 
 void flush_dcache_all(void)
 {
-#ifdef CONFIG_ISA_ARCV2
-       if (!ioc_exists)
-#endif
-               __dc_entire_op(OP_FLUSH);
+       __dc_entire_op(OP_FLUSH);
 
 #ifdef CONFIG_ISA_ARCV2
-       if (slc_exists && !ioc_exists)
+       if (slc_exists)
                __slc_entire_op(OP_FLUSH);
 #endif
 }