diff options
Diffstat (limited to 'arch/mips/mm/c-r4k.c')
| -rw-r--r-- | arch/mips/mm/c-r4k.c | 19 | 
1 files changed, 13 insertions, 6 deletions
diff --git a/arch/mips/mm/c-r4k.c b/arch/mips/mm/c-r4k.c index bda8eb26ece..f092c265dc6 100644 --- a/arch/mips/mm/c-r4k.c +++ b/arch/mips/mm/c-r4k.c @@ -32,7 +32,7 @@  #include <asm/mmu_context.h>  #include <asm/war.h>  #include <asm/cacheflush.h> /* for run_uncached() */ - +#include <asm/traps.h>  /*   * Special Variant of smp_call_function for use by cache functions: @@ -977,7 +977,7 @@ static void __cpuinit probe_pcache(void)  			c->icache.linesz = 2 << lsize;  		else  			c->icache.linesz = lsize; -		c->icache.sets = 64 << ((config1 >> 22) & 7); +		c->icache.sets = 32 << (((config1 >> 22) + 1) & 7);  		c->icache.ways = 1 + ((config1 >> 16) & 7);  		icache_size = c->icache.sets * @@ -997,7 +997,7 @@ static void __cpuinit probe_pcache(void)  			c->dcache.linesz = 2 << lsize;  		else  			c->dcache.linesz= lsize; -		c->dcache.sets = 64 << ((config1 >> 13) & 7); +		c->dcache.sets = 32 << (((config1 >> 13) + 1) & 7);  		c->dcache.ways = 1 + ((config1 >> 7) & 7);  		dcache_size = c->dcache.sets * @@ -1051,6 +1051,7 @@ static void __cpuinit probe_pcache(void)  	case CPU_R14000:  		break; +	case CPU_M14KC:  	case CPU_24K:  	case CPU_34K:  	case CPU_74K: @@ -1385,10 +1386,8 @@ static int __init setcoherentio(char *str)  __setup("coherentio", setcoherentio);  #endif -void __cpuinit r4k_cache_init(void) +static void __cpuinit r4k_cache_error_setup(void)  { -	extern void build_clear_page(void); -	extern void build_copy_page(void);  	extern char __weak except_vec2_generic;  	extern char __weak except_vec2_sb1;  	struct cpuinfo_mips *c = ¤t_cpu_data; @@ -1403,6 +1402,13 @@ void __cpuinit r4k_cache_init(void)  		set_uncached_handler(0x100, &except_vec2_generic, 0x80);  		break;  	} +} + +void __cpuinit r4k_cache_init(void) +{ +	extern void build_clear_page(void); +	extern void build_copy_page(void); +	struct cpuinfo_mips *c = ¤t_cpu_data;  	probe_pcache();  	setup_scache(); @@ -1465,4 +1471,5 @@ void __cpuinit r4k_cache_init(void)  	local_r4k___flush_cache_all(NULL);  #endif  	coherency_setup(); +	board_cache_error_setup = r4k_cache_error_setup;  }  |