summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey Brodkin <abrodkin@synopsys.com>2016-06-08 07:57:19 +0300
committerAlexey Brodkin <abrodkin@synopsys.com>2016-06-13 14:38:05 +0200
commitbd91508b50ade5c73b3749bf4e5ede31d2da7ef8 (patch)
tree5b69283fc76a698dac95f684d79520df2d7dedf2
parent6b3943f1b04be60f147ee540fbd72c4c7ea89f80 (diff)
downloadu-boot-imx-bd91508b50ade5c73b3749bf4e5ede31d2da7ef8.zip
u-boot-imx-bd91508b50ade5c73b3749bf4e5ede31d2da7ef8.tar.gz
u-boot-imx-bd91508b50ade5c73b3749bf4e5ede31d2da7ef8.tar.bz2
arc/cache: really do invalidate_dcache_all() even if IOC exists
invalidate_dcache_all() could be used in different use-cases and what is especially important most of those cases won't be related to DMAed data to or from peripherals, i.e. we'll be doing invalidation of data used purely by CPU cores. Given that IOC engine only snoops data that goes through DMA we need to care ourselves about data used only by CPU cores and so remove dependency on IOC from invalidate_dcache_all() and always do real invalidation. Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
-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 d1fb661..a27499e 100644
--- a/arch/arc/lib/cache.c
+++ b/arch/arc/lib/cache.c
@@ -417,13 +417,10 @@ void flush_cache(unsigned long start, unsigned long size)
void invalidate_dcache_all(void)
{
-#ifdef CONFIG_ISA_ARCV2
- if (!ioc_exists)
-#endif
- __dc_entire_op(OP_INV);
+ __dc_entire_op(OP_INV);
#ifdef CONFIG_ISA_ARCV2
- if (slc_exists && !ioc_exists)
+ if (slc_exists)
__slc_entire_op(OP_INV);
#endif
}