summaryrefslogtreecommitdiffstats
path: root/include/asm-i386/bugs.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-i386/bugs.h')
-rw-r--r--include/asm-i386/bugs.h14
1 files changed, 11 insertions, 3 deletions
diff --git a/include/asm-i386/bugs.h b/include/asm-i386/bugs.h
index ebd9a4f1a..2ceaa977d 100644
--- a/include/asm-i386/bugs.h
+++ b/include/asm-i386/bugs.h
@@ -357,10 +357,18 @@ __initfunc(static void check_cyrix_cpu(void))
__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");
}