Skip to content

Commit

Permalink
sh: disabled cache handling fix.
Browse files Browse the repository at this point in the history
Add code to handle the cache disabled case. Fixes breakage introduced by
37443ef ("sh: Migrate SH-4 cacheflush
ops to function pointers."). Without this patch configuring caches off
with CONFIG_CACHE_OFF=y makes kfr2r09 and migo-r lock up in fbdev
deferred io or early user space.

Signed-off-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
  • Loading branch information
Magnus Damm authored and Paul Mundt committed Oct 16, 2009
1 parent a7a7c0e commit 5fb80ae
Showing 1 changed file with 10 additions and 0 deletions.
10 changes: 10 additions & 0 deletions arch/sh/mm/cache.c
Original file line number Diff line number Diff line change
Expand Up @@ -265,6 +265,8 @@ static void __init emit_cache_params(void)

void __init cpu_cache_init(void)
{
unsigned int cache_disabled = !(__raw_readl(CCR) & CCR_CACHE_ENABLE);

compute_alias(&boot_cpu_data.icache);
compute_alias(&boot_cpu_data.dcache);
compute_alias(&boot_cpu_data.scache);
Expand All @@ -273,6 +275,13 @@ void __init cpu_cache_init(void)
__flush_purge_region = noop__flush_region;
__flush_invalidate_region = noop__flush_region;

/*
* No flushing is necessary in the disabled cache case so we can
* just keep the noop functions in local_flush_..() and __flush_..()
*/
if (unlikely(cache_disabled))
goto skip;

if (boot_cpu_data.family == CPU_FAMILY_SH2) {
extern void __weak sh2_cache_init(void);

Expand Down Expand Up @@ -312,5 +321,6 @@ void __init cpu_cache_init(void)
sh5_cache_init();
}

skip:
emit_cache_params();
}

0 comments on commit 5fb80ae

Please sign in to comment.