diff -uNr linux-2.3.paul/arch/ppc/kernel/ppc_htab.c linux-2.3.paul-work/arch/ppc/kernel/ppc_htab.c --- linux-2.3.paul/arch/ppc/kernel/ppc_htab.c Wed Apr 19 07:29:35 2000 +++ linux-2.3.paul-work/arch/ppc/kernel/ppc_htab.c Fri May 12 12:46:46 2000 @@ -565,19 +565,24 @@ if (!first) *p++ = '\t'; val = _get_L2CR(); - p += sprintf(p, "%08x: ", val); - p += sprintf(p, " %s", - (val&0x80000000)?"enabled":"disabled"); - p += sprintf(p,",%sparity",(val&0x40000000)?"":"no "); - p += sprintf(p, ",%s", sizestrings[(val >> 28) & 3]); - p += sprintf(p, ",%s", clockstrings[(val >> 25) & 7]); - p += sprintf(p, ",%s", typestrings[(val >> 23) & 0x2]); - p += sprintf(p,"%s",(val>>22)&1?"":",data only"); - p += sprintf(p,"%s",(val>>20)&1?",ZZ enabled":""); - p += sprintf(p,",%s",(val>>19)&1?"write-through":"copy-back"); - p += sprintf(p,",%sns hold", holdstrings[(val>>16)&3]); + p += sprintf(p, "0x%08x: ", val); + p += sprintf(p, " %s", (val >> 31) & 1 ? "enabled" : + "disabled"); + p += sprintf(p, ", %sparity", (val>>30)&1 ? "" : "no "); + p += sprintf(p, ", %s", sizestrings[(val >> 28) & 3]); + p += sprintf(p, ", %s", clockstrings[(val >> 25) & 7]); + p += sprintf(p, ", %s", typestrings[(val >> 23) & 2]); + p += sprintf(p, "%s", (val>>22)&1 ? ", data only" : ""); + p += sprintf(p, "%s", (val>>20)&1 ? ", ZZ enabled": ""); + p += sprintf(p, ", %s", (val>>19)&1 ? "write-through" : + "copy-back"); + p += sprintf(p, "%s", (val>>18)&1 ? ", testing" : ""); + p += sprintf(p, ", %sns hold",holdstrings[(val>>16)&3]); + p += sprintf(p, "%s", (val>>15)&1 ? ", DLL slow" : ""); + p += sprintf(p, "%s", (val>>14)&1 ? ", diff clock" :""); + p += sprintf(p, "%s", (val>>13)&1 ? ", DLL bypass" :""); - p += sprintf(p,"\n"); + p += sprintf(p, "\n"); len = strlen(buf); if (len > left) diff -uNr linux-2.3.paul/arch/ppc/kernel/setup.c linux-2.3.paul-work/arch/ppc/kernel/setup.c --- linux-2.3.paul/arch/ppc/kernel/setup.c Thu Apr 27 02:37:25 2000 +++ linux-2.3.paul-work/arch/ppc/kernel/setup.c Fri May 12 12:46:35 2000 @@ -641,10 +641,14 @@ { unsigned long val = simple_strtoul(str, NULL, 0); printk(KERN_INFO "l2cr set to %lx\n", val); - _set_L2CR(0); - _set_L2CR(val); + val |= 0x200000; /* perform global invalidate */ + _set_L2CR(0); /* disable cache */ + _set_L2CR(val & ~0x80000000); /* set cache parameters */ + _set_L2CR(val); /* and enable it */ } } + +__setup("l2cr=", ppc_setup_l2cr); void __init ppc_init(void) {