Skip to content

Commit

Permalink
arc: cache - build invalidate_icache_all() and invalidate_dcache_all()
Browse files Browse the repository at this point in the history
always

Make both invalidate_icache_all() and invalidate_dcache_all() available
even if U-Boot is configured with CONFIG_SYS_DCACHE_OFF and/or
CONFIG_SYS_ICACHE_OFF.

This is useful because configuration of U-Boot may not match actual
hardware features. Real board may have cache(s) but for some reason we
may want to run U-Boot with cache(s) disabled (for example if some
peripherals work improperly with existing drivers if data cache is
enabled). So board may start with cache(s) enabled (that's the case for
ARC cores with built-in caches) but early in U-Boot we disable cache(s)
and make sure all contents of data cache gets flushed in RAM.

Signed-off-by: Alexey Brodkin <[email protected]>
  • Loading branch information
abrodkin committed Apr 3, 2015
1 parent 36d6866 commit ae4a351
Showing 1 changed file with 8 additions and 4 deletions.
12 changes: 8 additions & 4 deletions arch/arc/lib/cache.c
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,12 @@ void icache_disable(void)

void invalidate_icache_all(void)
{
#ifndef CONFIG_SYS_ICACHE_OFF
/* If no cache in CPU exit immediately */
if (!(read_aux_reg(ARC_BCR_IC_BUILD) & CACHE_VER_NUM_MASK))
return;

/* Any write to IC_IVIC register triggers invalidation of entire I$ */
write_aux_reg(ARC_AUX_IC_IVIC, 1);
#endif /* CONFIG_SYS_ICACHE_OFF */
}

int dcache_status(void)
Expand Down Expand Up @@ -156,10 +158,12 @@ void invalidate_dcache_range(unsigned long start, unsigned long end)

void invalidate_dcache_all(void)
{
#ifndef CONFIG_SYS_DCACHE_OFF
/* If no cache in CPU exit immediately */
if (!(read_aux_reg(ARC_BCR_DC_BUILD) & CACHE_VER_NUM_MASK))
return;

/* Write 1 to DC_IVDC register triggers invalidation of entire D$ */
write_aux_reg(ARC_AUX_DC_IVDC, 1);
#endif /* CONFIG_SYS_DCACHE_OFF */
}

void flush_cache(unsigned long start, unsigned long size)
Expand Down

0 comments on commit ae4a351

Please sign in to comment.