diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2007-10-11 18:46:05 -0400 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2007-10-11 18:46:05 -0400 |
commit | 641e97f318870921d048154af6807e46e43c307a (patch) | |
tree | 6e0984a1bc8932db848be3fdb104a92c97fe341a /arch/mips/kernel | |
parent | 424b28ba4d25fc41abdb7e6fa90e132f0d9558fb (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.c | 8 | ||||
-rw-r--r-- | arch/mips/kernel/traps.c | 6 |
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 | ||
1438 | static 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 */ |
1439 | void __init set_uncached_handler (unsigned long offset, void *addr, unsigned long size) | 1442 | void __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 | ||