From bcd60335fcfce12e0f5e5fde8149fc2cb84b3e87 Mon Sep 17 00:00:00 2001 From: "David E. O'Brien" Date: Sun, 19 Jan 1997 01:56:55 +0000 Subject: Add bits to identify AMD K5 and K6 cpu's. Tested only on my AMD K5 PR-133. Bit values for K6 taken from AMD document on how to test such things. 2.2 Candidate. --- sys/amd64/amd64/identcpu.c | 24 ++++++++++++++++++------ sys/i386/i386/identcpu.c | 24 ++++++++++++++++++------ 2 files changed, 36 insertions(+), 12 deletions(-) (limited to 'sys') diff --git a/sys/amd64/amd64/identcpu.c b/sys/amd64/amd64/identcpu.c index da9f62947f00..28b85401a023 100644 --- a/sys/amd64/amd64/identcpu.c +++ b/sys/amd64/amd64/identcpu.c @@ -86,7 +86,7 @@ identifycpu(void) strncpy(cpu_model, i386_cpus[cpu].cpu_name, sizeof cpu_model); #if defined(I486_CPU) || defined(I586_CPU) || defined(I686_CPU) - if (!strcmp(cpu_vendor,"GenuineIntel")) { + if (0 == strcmp(cpu_vendor,"GenuineIntel")) { if ((cpu_id & 0xf00) > 3) { cpu_model[0] = '\0'; @@ -135,16 +135,27 @@ identifycpu(void) break; } } - } else if (!strcmp(cpu_vendor,"AuthenticAMD")) { + } else if (0 == strcmp(cpu_vendor,"AuthenticAMD")) { + // values taken from AMD Processor Recognition + // http://www.amd.com/html/products/pcd/techdocs/appnotes/20734c.pdf cpu_model[0] = '\0'; strcpy(cpu_model, "AMD "); - switch (cpu_id & 0xF0) { - case 0xE0: + switch (cpu_id & 0xFF0) { + case 0x4E0: strcat(cpu_model, "Am5x86 Write-Through"); break; - case 0xF0: + case 0x4F0: strcat(cpu_model, "Am5x86 Write-Back"); break; + case 0x500: + strcat(cpu_model, "K5 model 0"); + break; + case 0x510: + strcat(cpu_model, "K5 model 1"); + break; + case 0x560: + strcat(cpu_model, "K6"); + break; default: strcat(cpu_model, "Unknown"); break; @@ -193,7 +204,8 @@ identifycpu(void) if(cpu_id) printf(" Id = 0x%lx",cpu_id); - if (!strcmp(cpu_vendor, "GenuineIntel")) { + if (0 == strcmp(cpu_vendor, "GenuineIntel") + || 0 == strcmp(cpu_vendor, "AuthenticAMD")) { printf(" Stepping=%ld", cpu_id & 0xf); if (cpu_high > 0) { /* diff --git a/sys/i386/i386/identcpu.c b/sys/i386/i386/identcpu.c index da9f62947f00..28b85401a023 100644 --- a/sys/i386/i386/identcpu.c +++ b/sys/i386/i386/identcpu.c @@ -86,7 +86,7 @@ identifycpu(void) strncpy(cpu_model, i386_cpus[cpu].cpu_name, sizeof cpu_model); #if defined(I486_CPU) || defined(I586_CPU) || defined(I686_CPU) - if (!strcmp(cpu_vendor,"GenuineIntel")) { + if (0 == strcmp(cpu_vendor,"GenuineIntel")) { if ((cpu_id & 0xf00) > 3) { cpu_model[0] = '\0'; @@ -135,16 +135,27 @@ identifycpu(void) break; } } - } else if (!strcmp(cpu_vendor,"AuthenticAMD")) { + } else if (0 == strcmp(cpu_vendor,"AuthenticAMD")) { + // values taken from AMD Processor Recognition + // http://www.amd.com/html/products/pcd/techdocs/appnotes/20734c.pdf cpu_model[0] = '\0'; strcpy(cpu_model, "AMD "); - switch (cpu_id & 0xF0) { - case 0xE0: + switch (cpu_id & 0xFF0) { + case 0x4E0: strcat(cpu_model, "Am5x86 Write-Through"); break; - case 0xF0: + case 0x4F0: strcat(cpu_model, "Am5x86 Write-Back"); break; + case 0x500: + strcat(cpu_model, "K5 model 0"); + break; + case 0x510: + strcat(cpu_model, "K5 model 1"); + break; + case 0x560: + strcat(cpu_model, "K6"); + break; default: strcat(cpu_model, "Unknown"); break; @@ -193,7 +204,8 @@ identifycpu(void) if(cpu_id) printf(" Id = 0x%lx",cpu_id); - if (!strcmp(cpu_vendor, "GenuineIntel")) { + if (0 == strcmp(cpu_vendor, "GenuineIntel") + || 0 == strcmp(cpu_vendor, "AuthenticAMD")) { printf(" Stepping=%ld", cpu_id & 0xf); if (cpu_high > 0) { /* -- cgit v1.3