Skip to content
Snippets Groups Projects
Commit a4a43fcf authored by Alexey Brodkin's avatar Alexey Brodkin
Browse files

arc/cache: Flush & invalidate all caches right before enabling IOC


According to ARC HS databook it is required to flush and disable
caches prior programming IOC registers. Otherwise ongoing coherent
memory operations may not observe the coherency protocols as
expected.

But since in ARC HS v2.1 there's no way to disable SLC (AKA L2 cache)
we're doing our best flushing and invalidating it.

Signed-off-by: default avatarAlexey Brodkin <abrodkin@synopsys.com>
parent bd91508b
No related branches found
No related tags found
No related merge requests found
...@@ -209,6 +209,9 @@ void cache_init(void) ...@@ -209,6 +209,9 @@ void cache_init(void)
read_decode_cache_bcr_arcv2(); read_decode_cache_bcr_arcv2();
if (ioc_exists) { if (ioc_exists) {
flush_dcache_all();
invalidate_dcache_all();
/* IO coherency base - 0x8z */ /* IO coherency base - 0x8z */
write_aux_reg(ARC_AUX_IO_COH_AP0_BASE, 0x80000); write_aux_reg(ARC_AUX_IO_COH_AP0_BASE, 0x80000);
/* IO coherency aperture size - 512Mb: 0x8z-0xAz */ /* IO coherency aperture size - 512Mb: 0x8z-0xAz */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment