summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorLuiz Souza <luiz@netgate.com>2018-02-23 19:44:15 -0300
committerLuiz Souza <luiz@netgate.com>2018-02-23 19:44:15 -0300
commitc5c900c27bc09cad86e14c922ca133304c20b700 (patch)
treea41758bae880b47a39a492be96ff74e2bca51165 /sys
parent6188580d0b1b234f9250f22a4f7100379baf3ac4 (diff)
downloadFreeBSD-src-c5c900c27bc09cad86e14c922ca133304c20b700.zip
FreeBSD-src-c5c900c27bc09cad86e14c922ca133304c20b700.tar.gz
Revert "Revert "MFC r323822 (by cem):""
This reverts commit faf16174043b793fa12aaaf6f113a31cb1ae7968.
Diffstat (limited to 'sys')
-rw-r--r--sys/x86/include/specialreg.h7
-rw-r--r--sys/x86/include/x86_var.h1
-rw-r--r--sys/x86/x86/identcpu.c12
3 files changed, 20 insertions, 0 deletions
diff --git a/sys/x86/include/specialreg.h b/sys/x86/include/specialreg.h
index 94cadd3..77f01cd 100644
--- a/sys/x86/include/specialreg.h
+++ b/sys/x86/include/specialreg.h
@@ -323,6 +323,13 @@
#define AMDPM_CPB 0x00000200
/*
+ * AMD extended function 8000_0008h ebx info (amd_extended_feature_extensions)
+ */
+#define AMDFEID_CLZERO 0x00000001
+#define AMDFEID_IRPERF 0x00000002
+#define AMDFEID_XSAVEERPTR 0x00000004
+
+/*
* AMD extended function 8000_0008h ecx info
*/
#define AMDID_CMP_CORES 0x000000ff
diff --git a/sys/x86/include/x86_var.h b/sys/x86/include/x86_var.h
index ffdf2f0..73a24c7 100644
--- a/sys/x86/include/x86_var.h
+++ b/sys/x86/include/x86_var.h
@@ -45,6 +45,7 @@ extern u_int cpu_feature2;
extern u_int amd_feature;
extern u_int amd_feature2;
extern u_int amd_pminfo;
+extern u_int amd_extended_feature_extensions;
extern u_int via_feature_rng;
extern u_int via_feature_xcrypt;
extern u_int cpu_clflush_line_size;
diff --git a/sys/x86/x86/identcpu.c b/sys/x86/x86/identcpu.c
index dd2863b..d2fc82b 100644
--- a/sys/x86/x86/identcpu.c
+++ b/sys/x86/x86/identcpu.c
@@ -92,6 +92,7 @@ u_int cpu_feature2; /* Feature flags */
u_int amd_feature; /* AMD feature flags */
u_int amd_feature2; /* AMD feature flags */
u_int amd_pminfo; /* AMD advanced power management info */
+u_int amd_extended_feature_extensions;
u_int via_feature_rng; /* VIA RNG features */
u_int via_feature_xcrypt; /* VIA ACE features */
u_int cpu_high; /* Highest arg to CPUID */
@@ -992,6 +993,16 @@ printcpuinfo(void)
}
}
+ if (amd_extended_feature_extensions != 0) {
+ printf("\n "
+ "AMD Extended Feature Extensions ID EBX="
+ "0x%b", amd_extended_feature_extensions,
+ "\020"
+ "\001CLZERO"
+ "\002IRPerf"
+ "\003XSaveErPtr");
+ }
+
if (via_feature_rng != 0 || via_feature_xcrypt != 0)
print_via_padlock_info();
@@ -1471,6 +1482,7 @@ finishidentcpu(void)
if (cpu_exthigh >= 0x80000008) {
do_cpuid(0x80000008, regs);
cpu_maxphyaddr = regs[0] & 0xff;
+ amd_extended_feature_extensions = regs[1];
cpu_procinfo2 = regs[2];
} else {
cpu_maxphyaddr = (cpu_feature & CPUID_PAE) != 0 ? 36 : 32;
OpenPOWER on IntegriCloud