svn commit: r243139 - in stable/9/sys/amd64: amd64 include
Konstantin Belousov
kib at FreeBSD.org
Fri Nov 16 07:07:01 UTC 2012
Author: kib
Date: Fri Nov 16 07:07:00 2012
New Revision: 243139
URL: http://svnweb.freebsd.org/changeset/base/243139
Log:
MFC r242432:
Provide the reading and display of the Standard Extended Features,
introduced with the IvyBridge CPUs. Provide the definitions for new
bits in CR3 and CR4 registers.
Modified:
stable/9/sys/amd64/amd64/identcpu.c
stable/9/sys/amd64/amd64/initcpu.c
stable/9/sys/amd64/include/md_var.h
stable/9/sys/amd64/include/specialreg.h
Directory Properties:
stable/9/sys/ (props changed)
Modified: stable/9/sys/amd64/amd64/identcpu.c
==============================================================================
--- stable/9/sys/amd64/amd64/identcpu.c Fri Nov 16 07:05:57 2012 (r243138)
+++ stable/9/sys/amd64/amd64/identcpu.c Fri Nov 16 07:07:00 2012 (r243139)
@@ -384,6 +384,18 @@ printcpuinfo(void)
);
}
+ if (cpu_stdext_feature != 0) {
+ printf("\n Standard Extended Features=0x%b",
+ cpu_stdext_feature,
+ "\020"
+ "\001GSFSBASE"
+ "\002TSCADJ"
+ "\010SMEP"
+ "\012ENHMOVSB"
+ "\013INVPCID"
+ );
+ }
+
if (via_feature_rng != 0 || via_feature_xcrypt != 0)
print_via_padlock_info();
@@ -501,6 +513,11 @@ identify_cpu(void)
}
}
+ if (cpu_high >= 7) {
+ cpuid_count(7, 0, regs);
+ cpu_stdext_feature = regs[1];
+ }
+
if (cpu_vendor_id == CPU_VENDOR_INTEL ||
cpu_vendor_id == CPU_VENDOR_AMD ||
cpu_vendor_id == CPU_VENDOR_CENTAUR) {
Modified: stable/9/sys/amd64/amd64/initcpu.c
==============================================================================
--- stable/9/sys/amd64/amd64/initcpu.c Fri Nov 16 07:05:57 2012 (r243138)
+++ stable/9/sys/amd64/amd64/initcpu.c Fri Nov 16 07:07:00 2012 (r243139)
@@ -72,6 +72,7 @@ u_int cpu_vendor_id; /* CPU vendor ID *
u_int cpu_fxsr; /* SSE enabled */
u_int cpu_mxcsr_mask; /* Valid bits in mxcsr */
u_int cpu_clflush_line_size = 32;
+u_int cpu_stdext_feature;
u_int cpu_max_ext_state_size;
SYSCTL_UINT(_hw, OID_AUTO, via_feature_rng, CTLFLAG_RD,
Modified: stable/9/sys/amd64/include/md_var.h
==============================================================================
--- stable/9/sys/amd64/include/md_var.h Fri Nov 16 07:05:57 2012 (r243138)
+++ stable/9/sys/amd64/include/md_var.h Fri Nov 16 07:07:00 2012 (r243139)
@@ -48,6 +48,7 @@ extern u_int amd_pminfo;
extern u_int via_feature_rng;
extern u_int via_feature_xcrypt;
extern u_int cpu_clflush_line_size;
+extern u_int cpu_stdext_feature;
extern u_int cpu_fxsr;
extern u_int cpu_high;
extern u_int cpu_id;
Modified: stable/9/sys/amd64/include/specialreg.h
==============================================================================
--- stable/9/sys/amd64/include/specialreg.h Fri Nov 16 07:05:57 2012 (r243138)
+++ stable/9/sys/amd64/include/specialreg.h Fri Nov 16 07:07:00 2012 (r243139)
@@ -52,6 +52,8 @@
#define CR0_NW 0x20000000 /* Not Write-through */
#define CR0_CD 0x40000000 /* Cache Disable */
+#define CR3_PCID_SAVE 0x8000000000000000
+
/*
* Bits in PPro special registers
*/
@@ -66,7 +68,10 @@
#define CR4_PCE 0x00000100 /* Performance monitoring counter enable */
#define CR4_FXSR 0x00000200 /* Fast FPU save/restore used by OS */
#define CR4_XMM 0x00000400 /* enable SIMD/MMX2 to use except 16 */
+#define CR4_FSGSBASE 0x00010000 /* Enable FS/GS BASE accessing instructions */
+#define CR4_PCIDE 0x00020000 /* Enable Context ID */
#define CR4_XSAVE 0x00040000 /* XSETBV/XGETBV */
+#define CR4_SMEP 0x00100000 /* Supervisor-Mode Execution Prevention */
/*
* Bits in AMD64 special registers. EFER is 64 bits wide.
@@ -261,6 +266,12 @@
#define AMDID_COREID_SIZE 0x0000f000
#define AMDID_COREID_SIZE_SHIFT 12
+#define CPUID_STDEXT_FSGSBASE 0x00000001
+#define CPUID_STDEXT_TSC_ADJUST 0x00000002
+#define CPUID_STDEXT_SMEP 0x00000080
+#define CPUID_STDEXT_ENH_MOVSB 0x00000200
+#define CPUID_STDEXT_INVPCID 0x00000400
+
/*
* CPUID manufacturers identifiers
*/
More information about the svn-src-stable-9
mailing list