From owner-freebsd-bugs Sun Apr 20 13:34:18 1997 Return-Path: Received: (from root@localhost) by freefall.freebsd.org (8.8.5/8.8.5) id NAA14491 for bugs-outgoing; Sun, 20 Apr 1997 13:34:18 -0700 (PDT) Received: from isbalham.ist.co.uk (isbalham.ist.co.uk [192.31.26.1]) by freefall.freebsd.org (8.8.5/8.8.5) with ESMTP id NAA14467 for ; Sun, 20 Apr 1997 13:34:08 -0700 (PDT) Received: from gid.co.uk (uucp@localhost) by isbalham.ist.co.uk (8.8.4/8.8.4) with UUCP id VAA12580 for freefall.freebsd.org!freebsd-bugs; Sun, 20 Apr 1997 21:29:35 +0100 (BST) Received: from [194.32.164.2] by seagoon.gid.co.uk; Sun, 20 Apr 1997 21:23:29 +0100 X-Sender: rb@194.32.164.1 Message-Id: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Date: Sun, 20 Apr 1997 21:20:59 +0100 To: freebsd-bugs@freefall.freebsd.org From: Bob Bishop Subject: Re: kern/3292: Cyrix 486 performance problem Sender: owner-bugs@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk The root of this problem appears to be that Cyrix 486 DX DX2 and DX4 (and some equivalent TI-branded parts) are correctly identified, but are misclassified as CPU_486DLC where they should be just plain CPU_486. The following patch fixes the problem: *** identcpu.c.orig Sun Apr 20 17:33:35 1997 --- identcpu.c Sun Apr 20 17:37:00 1997 *************** *** 81,87 **** { "i486SX", CPUCLASS_486 }, /* CPU_486SX */ { "i486DX", CPUCLASS_486 }, /* CPU_486 */ { "Pentium", CPUCLASS_586 }, /* CPU_586 */ ! { "Cyrix 486", CPUCLASS_486 }, /* CPU_486DLC */ { "Pentium Pro", CPUCLASS_686 }, /* CPU_686 */ { "Cyrix 5x86", CPUCLASS_486 }, /* CPU_M1SC */ { "Cyrix 6x86", CPUCLASS_486 }, /* CPU_M1 */ --- 81,87 ---- { "i486SX", CPUCLASS_486 }, /* CPU_486SX */ { "i486DX", CPUCLASS_486 }, /* CPU_486 */ { "Pentium", CPUCLASS_586 }, /* CPU_586 */ ! { "Cyrix 486", CPUCLASS_486 }, /* CPU_486 or CPU_486DLC */ { "Pentium Pro", CPUCLASS_686 }, /* CPU_686 */ { "Cyrix 5x86", CPUCLASS_486 }, /* CPU_M1SC */ { "Cyrix 6x86", CPUCLASS_486 }, /* CPU_M1 */ *************** *** 533,540 **** * Don't check (cpu_id & 0x00f0) == 0x50 to detect M2, now. */ switch (cyrix_did & 0x00f0) { - case 0x00: case 0x10: case 0xf0: cpu = CPU_486DLC; break; --- 533,543 ---- * Don't check (cpu_id & 0x00f0) == 0x50 to detect M2, now. */ switch (cyrix_did & 0x00f0) { case 0x10: + /* 486DX, DX2, DX4 doesn't need fancy initialisation */ + cpu = CPU_486; + break; + case 0x00: case 0xf0: cpu = CPU_486DLC; break; -- Bob Bishop (0118) 977 4017 international code +44 118 rb@gid.co.uk fax (0118) 989 4254 between 0800 and 1800 UK