|
@@ -81,7 +81,7 @@
|
|
|
#define X86_FEATURE_P4 ( 3*32+ 7) /* "" P4 */
|
|
|
#define X86_FEATURE_CONSTANT_TSC ( 3*32+ 8) /* TSC ticks at a constant rate */
|
|
|
#define X86_FEATURE_UP ( 3*32+ 9) /* smp kernel running on up */
|
|
|
-#define X86_FEATURE_FXSAVE_LEAK ( 3*32+10) /* "" FXSAVE leaks FOP/FIP/FOP */
|
|
|
+/* free, was #define X86_FEATURE_FXSAVE_LEAK ( 3*32+10) * "" FXSAVE leaks FOP/FIP/FOP */
|
|
|
#define X86_FEATURE_ARCH_PERFMON ( 3*32+11) /* Intel Architectural PerfMon */
|
|
|
#define X86_FEATURE_PEBS ( 3*32+12) /* Precise-Event Based Sampling */
|
|
|
#define X86_FEATURE_BTS ( 3*32+13) /* Branch Trace Store */
|
|
@@ -90,13 +90,13 @@
|
|
|
#define X86_FEATURE_REP_GOOD ( 3*32+16) /* rep microcode works well */
|
|
|
#define X86_FEATURE_MFENCE_RDTSC ( 3*32+17) /* "" Mfence synchronizes RDTSC */
|
|
|
#define X86_FEATURE_LFENCE_RDTSC ( 3*32+18) /* "" Lfence synchronizes RDTSC */
|
|
|
-#define X86_FEATURE_11AP ( 3*32+19) /* "" Bad local APIC aka 11AP */
|
|
|
+/* free, was #define X86_FEATURE_11AP ( 3*32+19) * "" Bad local APIC aka 11AP */
|
|
|
#define X86_FEATURE_NOPL ( 3*32+20) /* The NOPL (0F 1F) instructions */
|
|
|
#define X86_FEATURE_ALWAYS ( 3*32+21) /* "" Always-present feature */
|
|
|
#define X86_FEATURE_XTOPOLOGY ( 3*32+22) /* cpu topology enum extensions */
|
|
|
#define X86_FEATURE_TSC_RELIABLE ( 3*32+23) /* TSC is known to be reliable */
|
|
|
#define X86_FEATURE_NONSTOP_TSC ( 3*32+24) /* TSC does not stop in C states */
|
|
|
-#define X86_FEATURE_CLFLUSH_MONITOR ( 3*32+25) /* "" clflush reqd with monitor */
|
|
|
+/* free, was #define X86_FEATURE_CLFLUSH_MONITOR ( 3*32+25) * "" clflush reqd with monitor */
|
|
|
#define X86_FEATURE_EXTD_APICID ( 3*32+26) /* has extended APICID (8 bits) */
|
|
|
#define X86_FEATURE_AMD_DCM ( 3*32+27) /* multi-node processor */
|
|
|
#define X86_FEATURE_APERFMPERF ( 3*32+28) /* APERFMPERF */
|
|
@@ -241,6 +241,9 @@
|
|
|
#define X86_BUG_COMA X86_BUG(2) /* Cyrix 6x86 coma */
|
|
|
#define X86_BUG_AMD_TLB_MMATCH X86_BUG(3) /* AMD Erratum 383 */
|
|
|
#define X86_BUG_AMD_APIC_C1E X86_BUG(4) /* AMD Erratum 400 */
|
|
|
+#define X86_BUG_11AP X86_BUG(5) /* Bad local APIC aka 11AP */
|
|
|
+#define X86_BUG_FXSAVE_LEAK X86_BUG(6) /* FXSAVE leaks FOP/FIP/FOP */
|
|
|
+#define X86_BUG_CLFLUSH_MONITOR X86_BUG(7) /* AAI65, CLFLUSH required before MONITOR */
|
|
|
|
|
|
#if defined(__KERNEL__) && !defined(__ASSEMBLY__)
|
|
|
|
|
@@ -545,20 +548,20 @@ static __always_inline __pure bool _static_cpu_has_safe(u16 bit)
|
|
|
#define static_cpu_has_safe(bit) boot_cpu_has(bit)
|
|
|
#endif
|
|
|
|
|
|
-#define cpu_has_bug(c, bit) cpu_has(c, (bit))
|
|
|
-#define set_cpu_bug(c, bit) set_cpu_cap(c, (bit))
|
|
|
-#define clear_cpu_bug(c, bit) clear_cpu_cap(c, (bit));
|
|
|
+#define cpu_has_bug(c, bit) cpu_has(c, (bit))
|
|
|
+#define set_cpu_bug(c, bit) set_cpu_cap(c, (bit))
|
|
|
+#define clear_cpu_bug(c, bit) clear_cpu_cap(c, (bit))
|
|
|
|
|
|
-#define static_cpu_has_bug(bit) static_cpu_has((bit))
|
|
|
-#define boot_cpu_has_bug(bit) cpu_has_bug(&boot_cpu_data, (bit))
|
|
|
+#define static_cpu_has_bug(bit) static_cpu_has((bit))
|
|
|
+#define static_cpu_has_bug_safe(bit) static_cpu_has_safe((bit))
|
|
|
+#define boot_cpu_has_bug(bit) cpu_has_bug(&boot_cpu_data, (bit))
|
|
|
|
|
|
-#define MAX_CPU_FEATURES (NCAPINTS * 32)
|
|
|
-#define cpu_have_feature boot_cpu_has
|
|
|
+#define MAX_CPU_FEATURES (NCAPINTS * 32)
|
|
|
+#define cpu_have_feature boot_cpu_has
|
|
|
|
|
|
-#define CPU_FEATURE_TYPEFMT "x86,ven%04Xfam%04Xmod%04X"
|
|
|
-#define CPU_FEATURE_TYPEVAL boot_cpu_data.x86_vendor, boot_cpu_data.x86, \
|
|
|
- boot_cpu_data.x86_model
|
|
|
+#define CPU_FEATURE_TYPEFMT "x86,ven%04Xfam%04Xmod%04X"
|
|
|
+#define CPU_FEATURE_TYPEVAL boot_cpu_data.x86_vendor, boot_cpu_data.x86, \
|
|
|
+ boot_cpu_data.x86_model
|
|
|
|
|
|
#endif /* defined(__KERNEL__) && !defined(__ASSEMBLY__) */
|
|
|
-
|
|
|
#endif /* _ASM_X86_CPUFEATURE_H */
|