X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fsh%2Fmm%2Fcache-sh3.c;h=cb6c0c0c7d56605ecd4de19bd561ba1452250d1f;hb=5e3b93f248c98873cc843e83092bb8da92ac85a2;hp=b03d5e441029c0a6ada0bfb42fe32e7f53450b8b;hpb=a91482bdcc2e0f6035702e46f1b99043a0893346;p=linux-2.6.git diff --git a/arch/sh/mm/cache-sh3.c b/arch/sh/mm/cache-sh3.c index b03d5e441..cb6c0c0c7 100644 --- a/arch/sh/mm/cache-sh3.c +++ b/arch/sh/mm/cache-sh3.c @@ -1,4 +1,4 @@ -/* $Id: cache-sh3.c,v 1.9 2004/05/02 01:46:30 sugioka Exp $ +/* $Id: cache-sh3.c,v 1.8 2004/02/01 16:26:27 lethal Exp $ * * linux/arch/sh/mm/cache-sh3.c * @@ -65,14 +65,14 @@ int __init detect_cpu_and_cache_system(void) * 2K(direct) 7702 is not supported (yet) */ if (data0 == data1 && data2 == data3) { /* Shadow */ - cpu_data->dcache.way_incr = (1 << 11); + cpu_data->dcache.way_shift = 11; cpu_data->dcache.entry_mask = 0x7f0; cpu_data->dcache.sets = 128; cpu_data->type = CPU_SH7708; - cpu_data->flags |= CPU_HAS_MMU_PAGE_ASSOC; + set_bit(CPU_HAS_MMU_PAGE_ASSOC, &(cpu_data->flags)); } else { /* 7709A or 7729 */ - cpu_data->dcache.way_incr = (1 << 12); + cpu_data->dcache.way_shift = 12; cpu_data->dcache.entry_mask = 0xff0; cpu_data->dcache.sets = 256; cpu_data->type = CPU_SH7729; @@ -108,12 +108,13 @@ void __flush_wback_region(void *start, int size) & ~(L1_CACHE_BYTES-1); for (v = begin; v < end; v+=L1_CACHE_BYTES) { - unsigned long addrstart = CACHE_OC_ADDRESS_ARRAY; for (j = 0; j < cpu_data->dcache.ways; j++) { unsigned long data, addr, p; p = __pa(v); - addr = addrstart | (v & cpu_data->dcache.entry_mask); + addr = CACHE_OC_ADDRESS_ARRAY | + (j << cpu_data->dcache.way_shift)| + (v & cpu_data->dcache.entry_mask); local_irq_save(flags); data = ctrl_inl(addr); @@ -125,7 +126,6 @@ void __flush_wback_region(void *start, int size) break; } local_irq_restore(flags); - addrstart += cpu_data->dcache.way_incr; } } }