patch-2.2.10 linux/include/asm-i386/bugs.h

Next file: linux/include/asm-i386/locks.h
Previous file: linux/include/asm-arm/arch-ebsa285/memory.h
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.2.9/linux/include/asm-i386/bugs.h linux/include/asm-i386/bugs.h
@@ -357,10 +357,18 @@
 __initfunc(static void check_cyrix_coma(void))
 {
 	if (boot_cpu_data.coma_bug) {
-		unsigned char ccr1;
+		unsigned char ccr3, tmp;
 		cli();
-		ccr1 = getCx86 (CX86_CCR1);
-		setCx86 (CX86_CCR1, ccr1 | 0x10);
+		ccr3 = getCx86(CX86_CCR3);
+		setCx86(CX86_CCR3, (ccr3 & 0x0f) | 0x10); /* enable MAPEN  */
+		tmp = getCx86(0x31);
+		setCx86(0x31, tmp | 0xf8);
+		tmp = getCx86(0x32);
+		setCx86(0x32, tmp | 0x7f);
+		setCx86(0x33, 0);
+		tmp = getCx86(0x3c);
+		setCx86(0x3c, tmp | 0x87);
+		setCx86(CX86_CCR3, ccr3);                 /* disable MAPEN */
 		sti();
 		printk("Cyrix processor with \"coma bug\" found, workaround enabled\n");
 	}

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)