summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/amd64/amd64/identcpu.c24
-rw-r--r--sys/i386/i386/identcpu.c24
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) {
/*
OpenPOWER on IntegriCloud