diff options
-rw-r--r-- | sys/amd64/amd64/identcpu.c | 24 | ||||
-rw-r--r-- | sys/i386/i386/identcpu.c | 24 |
2 files changed, 36 insertions, 12 deletions
diff --git a/sys/amd64/amd64/identcpu.c b/sys/amd64/amd64/identcpu.c index da9f629..28b8540 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 da9f629..28b8540 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) { /* |