aboutsummaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorAlexey Brodkin2016-04-16 15:28:30 +0300
committerAlexey Brodkin2016-04-21 20:09:59 +0300
commit2a8382c6fe7ddf0e15791b3ffa5f390a674a212b (patch)
tree7a4523d1a3924bf429f80687dda4e8df423d2a8b /arch
parentee8b25fa354da7cfaafe0e6781e873c74c29bbad (diff)
arc/cache: really do flush_dcache_all() even if IOC exists
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>
Diffstat (limited to 'arch')
-rw-r--r--arch/arc/lib/cache.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/arch/arc/lib/cache.c b/arch/arc/lib/cache.c
index 56988dda18d..d1fb6615377 100644
--- a/arch/arc/lib/cache.c
+++ b/arch/arc/lib/cache.c
@@ -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
}