summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
Diffstat (limited to 'sys')
-rw-r--r--sys/amd64/amd64/identcpu.c99
-rw-r--r--sys/i386/i386/identcpu.c99
2 files changed, 104 insertions, 94 deletions
diff --git a/sys/amd64/amd64/identcpu.c b/sys/amd64/amd64/identcpu.c
index 323b39c..f9e03c7 100644
--- a/sys/amd64/amd64/identcpu.c
+++ b/sys/amd64/amd64/identcpu.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* from: Id: machdep.c,v 1.193 1996/06/18 01:22:04 bde Exp
- * $Id: identcpu.c,v 1.66 1999/07/05 02:27:32 green Exp $
+ * $Id: identcpu.c,v 1.65 1999/06/24 20:08:56 jlemon Exp $
*/
#include "opt_cpu.h"
@@ -71,7 +71,8 @@ void enable_K6_2_wt_alloc(void);
void panicifcpuunsupported(void);
static void identifycyrix(void);
-static void print_AMD_info(void);
+static void print_AMD_features(u_int *regs);
+static void print_AMD_info(u_int amd_maxregs);
static void print_AMD_assoc(int i);
static void do_cpuid(u_int ax, u_int *p);
@@ -525,7 +526,7 @@ printcpuinfo(void)
strcmp(cpu_vendor, "RiseRiseRise") == 0 ||
((strcmp(cpu_vendor, "CyrixInstead") == 0) &&
((cpu_id & 0xf00) > 0x500))) {
- printf(" Stepping=%u", cpu_id & 0xf);
+ printf(" Stepping = %u", cpu_id & 0xf);
if (strcmp(cpu_vendor, "CyrixInstead") == 0)
printf(" DIR=0x%04x", cyrix_did);
if (cpu_high > 0) {
@@ -573,6 +574,9 @@ printcpuinfo(void)
"\040<b31>"
);
}
+ if (strcmp(cpu_vendor, "AuthenticAMD") == 0 &&
+ nreg >= 0x80000001)
+ print_AMD_features(regs);
} else if (strcmp(cpu_vendor, "CyrixInstead") == 0) {
printf(" DIR=0x%04x", cyrix_did);
printf(" Stepping=%u", (cyrix_did & 0xf000) >> 12);
@@ -591,7 +595,7 @@ printcpuinfo(void)
return;
if (strcmp(cpu_vendor, "AuthenticAMD") == 0)
- print_AMD_info();
+ print_AMD_info(nreg);
#ifdef I686_CPU
/*
* XXX - Do PPro CPUID level=2 stuff here?
@@ -867,53 +871,13 @@ print_AMD_assoc(int i)
}
static void
-print_AMD_info(void)
+print_AMD_info(u_int amd_maxregs)
{
- u_int regs[4], amd_maxregs;
quad_t amd_whcr;
- do_cpuid(0x80000000, regs);
- amd_maxregs = regs[0];
-
- if (amd_maxregs >= 0x80000001) {
- do_cpuid(0x80000001, regs);
- printf(" AMD Features=0x%b\n", regs[3],
- "\020" /* in hex */
- "\001FPU"
- "\002VME"
- "\003DE"
- "\004PSE"
- "\005TSC"
- "\006MSR"
- "\007<b6>"
- "\010MCE"
- "\011CX8"
- "\012<b9>"
- "\013<b10>"
- "\014SYSCALL"
- "\015<b12>"
- "\016PGE"
- "\017<b14>"
- "\020ICMOV"
- "\021FCMOV"
- "\022<b17>"
- "\023<b18>"
- "\024<b19>"
- "\025<b20>"
- "\026<b21>"
- "\027<b22>"
- "\030MMX"
- "\031<b24>"
- "\032<b25>"
- "\033<b26>"
- "\034<b27>"
- "\035<b28>"
- "\036<b29>"
- "\037<b30>"
- "\0403DNow!"
- );
- }
if (amd_maxregs >= 0x80000005) {
+ u_int regs[4];
+
do_cpuid(0x80000005, regs);
printf("Data TLB: %d entries", (regs[1] >> 16) & 0xff);
print_AMD_assoc(regs[1] >> 24);
@@ -965,3 +929,44 @@ print_AMD_info(void)
}
}
}
+
+static void
+print_AMD_features(u_int *regs)
+{
+ do_cpuid(0x80000001, regs);
+ printf("\n AMD Features=0x%b", regs[3] &~ cpu_feature,
+ "\020" /* in hex */
+ "\001FPU"
+ "\002VME"
+ "\003DE"
+ "\004PSE"
+ "\005TSC"
+ "\006MSR"
+ "\007<b6>"
+ "\010MCE"
+ "\011CX8"
+ "\012<b9>"
+ "\013<b10>"
+ "\014SYSCALL"
+ "\015<b12>"
+ "\016PGE"
+ "\017<b14>"
+ "\020ICMOV"
+ "\021FCMOV"
+ "\022<b17>"
+ "\023<b18>"
+ "\024<b19>"
+ "\025<b20>"
+ "\026<b21>"
+ "\027<b22>"
+ "\030MMX"
+ "\031<b24>"
+ "\032<b25>"
+ "\033<b26>"
+ "\034<b27>"
+ "\035<b28>"
+ "\036<b29>"
+ "\037<b30>"
+ "\0403DNow!"
+ );
+}
diff --git a/sys/i386/i386/identcpu.c b/sys/i386/i386/identcpu.c
index 323b39c..f9e03c7 100644
--- a/sys/i386/i386/identcpu.c
+++ b/sys/i386/i386/identcpu.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* from: Id: machdep.c,v 1.193 1996/06/18 01:22:04 bde Exp
- * $Id: identcpu.c,v 1.66 1999/07/05 02:27:32 green Exp $
+ * $Id: identcpu.c,v 1.65 1999/06/24 20:08:56 jlemon Exp $
*/
#include "opt_cpu.h"
@@ -71,7 +71,8 @@ void enable_K6_2_wt_alloc(void);
void panicifcpuunsupported(void);
static void identifycyrix(void);
-static void print_AMD_info(void);
+static void print_AMD_features(u_int *regs);
+static void print_AMD_info(u_int amd_maxregs);
static void print_AMD_assoc(int i);
static void do_cpuid(u_int ax, u_int *p);
@@ -525,7 +526,7 @@ printcpuinfo(void)
strcmp(cpu_vendor, "RiseRiseRise") == 0 ||
((strcmp(cpu_vendor, "CyrixInstead") == 0) &&
((cpu_id & 0xf00) > 0x500))) {
- printf(" Stepping=%u", cpu_id & 0xf);
+ printf(" Stepping = %u", cpu_id & 0xf);
if (strcmp(cpu_vendor, "CyrixInstead") == 0)
printf(" DIR=0x%04x", cyrix_did);
if (cpu_high > 0) {
@@ -573,6 +574,9 @@ printcpuinfo(void)
"\040<b31>"
);
}
+ if (strcmp(cpu_vendor, "AuthenticAMD") == 0 &&
+ nreg >= 0x80000001)
+ print_AMD_features(regs);
} else if (strcmp(cpu_vendor, "CyrixInstead") == 0) {
printf(" DIR=0x%04x", cyrix_did);
printf(" Stepping=%u", (cyrix_did & 0xf000) >> 12);
@@ -591,7 +595,7 @@ printcpuinfo(void)
return;
if (strcmp(cpu_vendor, "AuthenticAMD") == 0)
- print_AMD_info();
+ print_AMD_info(nreg);
#ifdef I686_CPU
/*
* XXX - Do PPro CPUID level=2 stuff here?
@@ -867,53 +871,13 @@ print_AMD_assoc(int i)
}
static void
-print_AMD_info(void)
+print_AMD_info(u_int amd_maxregs)
{
- u_int regs[4], amd_maxregs;
quad_t amd_whcr;
- do_cpuid(0x80000000, regs);
- amd_maxregs = regs[0];
-
- if (amd_maxregs >= 0x80000001) {
- do_cpuid(0x80000001, regs);
- printf(" AMD Features=0x%b\n", regs[3],
- "\020" /* in hex */
- "\001FPU"
- "\002VME"
- "\003DE"
- "\004PSE"
- "\005TSC"
- "\006MSR"
- "\007<b6>"
- "\010MCE"
- "\011CX8"
- "\012<b9>"
- "\013<b10>"
- "\014SYSCALL"
- "\015<b12>"
- "\016PGE"
- "\017<b14>"
- "\020ICMOV"
- "\021FCMOV"
- "\022<b17>"
- "\023<b18>"
- "\024<b19>"
- "\025<b20>"
- "\026<b21>"
- "\027<b22>"
- "\030MMX"
- "\031<b24>"
- "\032<b25>"
- "\033<b26>"
- "\034<b27>"
- "\035<b28>"
- "\036<b29>"
- "\037<b30>"
- "\0403DNow!"
- );
- }
if (amd_maxregs >= 0x80000005) {
+ u_int regs[4];
+
do_cpuid(0x80000005, regs);
printf("Data TLB: %d entries", (regs[1] >> 16) & 0xff);
print_AMD_assoc(regs[1] >> 24);
@@ -965,3 +929,44 @@ print_AMD_info(void)
}
}
}
+
+static void
+print_AMD_features(u_int *regs)
+{
+ do_cpuid(0x80000001, regs);
+ printf("\n AMD Features=0x%b", regs[3] &~ cpu_feature,
+ "\020" /* in hex */
+ "\001FPU"
+ "\002VME"
+ "\003DE"
+ "\004PSE"
+ "\005TSC"
+ "\006MSR"
+ "\007<b6>"
+ "\010MCE"
+ "\011CX8"
+ "\012<b9>"
+ "\013<b10>"
+ "\014SYSCALL"
+ "\015<b12>"
+ "\016PGE"
+ "\017<b14>"
+ "\020ICMOV"
+ "\021FCMOV"
+ "\022<b17>"
+ "\023<b18>"
+ "\024<b19>"
+ "\025<b20>"
+ "\026<b21>"
+ "\027<b22>"
+ "\030MMX"
+ "\031<b24>"
+ "\032<b25>"
+ "\033<b26>"
+ "\034<b27>"
+ "\035<b28>"
+ "\036<b29>"
+ "\037<b30>"
+ "\0403DNow!"
+ );
+}
OpenPOWER on IntegriCloud