Subject: Re: identifycpu() on a Cyrix 6x86
To: Frank van der Linden <frank@wins.uva.nl>
From: Michael L. VanLoon -- HeadCandy.com <michaelv@MindBender.serv.net>
List: port-i386
Date: 02/02/1998 08:59:34
>> >Identifying Cyrix chips can be a bit confusing. I think the issue here
>> >is that the 6x86 is almost, but not completely a 586. Also, it doesn't
>> >have cpuid enabled by default (which makes it incompatible with the
>> >Pentium as well), but does have the feature.

>> This is kinda silly.  Saying the 6x86 is not quite a 586 because it
>> doesn't properly implement a cpuid instruction (which if I'm not
>> mistaken, the first Pentiums didn't have, either), is absurd.  The
>> 6x86 is clearly a more advanced design than the Pentium.  To be
>> correct, technologically, the 6x86 is more like a 5-1/2x86.  Obviously
>> it's not a 686, but it's more than a 586.

>First of all, I did not say that the 6x86 is not considered a 586 because
>it does not have cpuid enabled by default. There are other differences.
>The "class" identifier is used in the kernel to say "it is 100%
>compatible with at least that class CPU from Intel". Now, I have
nothing against the Cyrix chips, but saying "clearly more advanced
>design" is not a clear flag to base decisions in the kernel on.. You
>want to know _exactly_ what it matches with. And since this all
>started with Intel chips, that's the standard that is matched against.

OK, assuming there is a way to reliably identify genuine Cyrix 6x86
processors (which I'm pretty sure there is), what other capabilityes
and/or opcodes are missing, which are present in the Pentium, and
which make a difference to the kernel code (and which could
potentially make a difference if we were to rely on some 586-specific
capability or opcode in I586_CPU or higher versions of the kernel)?

-----------------------------------------------------------------------------
  Michael L. VanLoon    mvanloon@exmsft.com    michaelv@MindBender.serv.net
      Contract software development for Windows NT, Windows 95 and Unix.
             Windows NT and Unix server development in C++ and C.

        --<  Free your mind and your machine -- NetBSD free un*x  >--
    NetBSD working ports: 386+PC, Mac 68k, Amiga, Atari 68k, HP300, Sun3,
        Sun4/4c/4m, DEC MIPS, DEC Alpha, PC532, VAX, MVME68k, arm32...
    NetBSD ports in progress: PICA, others...
-----------------------------------------------------------------------------