X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fmips%2Fmm%2Fsc-rm7k.c;h=9e8ff8badb1935c694841592ed5b478f0caadf56;hb=987b0145d94eecf292d8b301228356f44611ab7c;hp=31ec730524239dcc9de7c22dd2cda845daa8b963;hpb=f7ed79d23a47594e7834d66a8f14449796d4f3e6;p=linux-2.6.git diff --git a/arch/mips/mm/sc-rm7k.c b/arch/mips/mm/sc-rm7k.c index 31ec73052..9e8ff8bad 100644 --- a/arch/mips/mm/sc-rm7k.c +++ b/arch/mips/mm/sc-rm7k.c @@ -9,7 +9,6 @@ #include #include #include -#include #include #include @@ -44,7 +43,14 @@ static void rm7k_sc_wback_inv(unsigned long addr, unsigned long size) /* Catch bad driver code */ BUG_ON(size == 0); - blast_scache_range(addr, addr + size); + a = addr & ~(sc_lsize - 1); + end = (addr + size - 1) & ~(sc_lsize - 1); + while (1) { + flush_scache_line(a); /* Hit_Writeback_Inv_SD */ + if (a == end) + break; + a += sc_lsize; + } if (!rm7k_tcache_enabled) return; @@ -68,7 +74,14 @@ static void rm7k_sc_inv(unsigned long addr, unsigned long size) /* Catch bad driver code */ BUG_ON(size == 0); - blast_inv_scache_range(addr, addr + size); + a = addr & ~(sc_lsize - 1); + end = (addr + size - 1) & ~(sc_lsize - 1); + while (1) { + invalidate_scache_line(a); /* Hit_Invalidate_SD */ + if (a == end) + break; + a += sc_lsize; + } if (!rm7k_tcache_enabled) return; @@ -130,17 +143,11 @@ struct bcache_ops rm7k_sc_ops = { void __init rm7k_sc_init(void) { - struct cpuinfo_mips *c = ¤t_cpu_data; unsigned int config = read_c0_config(); if ((config & RM7K_CONF_SC)) return; - c->scache.linesz = sc_lsize; - c->scache.ways = 4; - c->scache.waybit= __ffs(scache_size / c->scache.ways); - c->scache.waysize = scache_size / c->scache.ways; - c->scache.sets = scache_size / (c->scache.linesz * c->scache.ways); printk(KERN_INFO "Secondary cache size %dK, linesize %d bytes.\n", (scache_size >> 10), sc_lsize);