diff options
Diffstat (limited to 'include/asm-i386/bugs.h')
-rw-r--r-- | include/asm-i386/bugs.h | 14 |
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"); } |