aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/kernel
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2007-10-11 18:46:05 -0400
committerRalf Baechle <ralf@linux-mips.org>2007-10-11 18:46:05 -0400
commit641e97f318870921d048154af6807e46e43c307a (patch)
tree6e0984a1bc8932db848be3fdb104a92c97fe341a /arch/mips/kernel
parent424b28ba4d25fc41abdb7e6fa90e132f0d9558fb (diff)
[MIPS] Sibyte: Replace SB1 cachecode with standard R4000 class cache code.
It may not be perfect yet but the SB1 code is badly borken and has horrible performance issues. Downside: This seriously breaks support for pass 1 parts of the BCM1250 where indexed cacheops don't work quite reliable but I seem to be the last one on the planet with a pass 1 part anyway. Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/kernel')
-rw-r--r--arch/mips/kernel/cpu-probe.c8
-rw-r--r--arch/mips/kernel/traps.c6
2 files changed, 6 insertions, 8 deletions
diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c
index 97c03865c06a..dde2adf1481c 100644
--- a/arch/mips/kernel/cpu-probe.c
+++ b/arch/mips/kernel/cpu-probe.c
@@ -746,14 +746,6 @@ static inline void cpu_probe_sibyte(struct cpuinfo_mips *c)
746{ 746{
747 decode_configs(c); 747 decode_configs(c);
748 748
749 /*
750 * For historical reasons the SB1 comes with it's own variant of
751 * cache code which eventually will be folded into c-r4k.c. Until
752 * then we pretend it's got it's own cache architecture.
753 */
754 c->options &= ~MIPS_CPU_4K_CACHE;
755 c->options |= MIPS_CPU_SB1_CACHE;
756
757 switch (c->processor_id & 0xff00) { 749 switch (c->processor_id & 0xff00) {
758 case PRID_IMP_SB1: 750 case PRID_IMP_SB1:
759 c->cputype = CPU_SB1; 751 c->cputype = CPU_SB1;
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
index 3d033e1cd4f0..d96f8218a91e 100644
--- a/arch/mips/kernel/traps.c
+++ b/arch/mips/kernel/traps.c
@@ -1435,6 +1435,9 @@ void __init set_handler (unsigned long offset, void *addr, unsigned long size)
1435 flush_icache_range(ebase + offset, ebase + offset + size); 1435 flush_icache_range(ebase + offset, ebase + offset + size);
1436} 1436}
1437 1437
1438static char panic_null_cerr[] __initdata =
1439 "Trying to set NULL cache error exception handler";
1440
1438/* Install uncached CPU exception handler */ 1441/* Install uncached CPU exception handler */
1439void __init set_uncached_handler (unsigned long offset, void *addr, unsigned long size) 1442void __init set_uncached_handler (unsigned long offset, void *addr, unsigned long size)
1440{ 1443{
@@ -1445,6 +1448,9 @@ void __init set_uncached_handler (unsigned long offset, void *addr, unsigned lon
1445 unsigned long uncached_ebase = TO_UNCAC(ebase); 1448 unsigned long uncached_ebase = TO_UNCAC(ebase);
1446#endif 1449#endif
1447 1450
1451 if (!addr)
1452 panic(panic_null_cerr);
1453
1448 memcpy((void *)(uncached_ebase + offset), addr, size); 1454 memcpy((void *)(uncached_ebase + offset), addr, size);
1449} 1455}
1450 1456