aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/Kconfig.cpu24
-rw-r--r--arch/x86/include/asm/cpufeature.h5
-rw-r--r--arch/x86/kernel/cpu/common.c1
3 files changed, 22 insertions, 8 deletions
diff --git a/arch/x86/Kconfig.cpu b/arch/x86/Kconfig.cpu
index 6983314c8b37..3ba5ff2f2d08 100644
--- a/arch/x86/Kconfig.cpu
+++ b/arch/x86/Kconfig.cpu
@@ -3,10 +3,6 @@ choice
3 prompt "Processor family" 3 prompt "Processor family"
4 default M686 if X86_32 4 default M686 if X86_32
5 default GENERIC_CPU if X86_64 5 default GENERIC_CPU if X86_64
6
7config M486
8 bool "486"
9 depends on X86_32
10 ---help--- 6 ---help---
11 This is the processor type of your CPU. This information is 7 This is the processor type of your CPU. This information is
12 used for optimizing purposes. In order to compile a kernel 8 used for optimizing purposes. In order to compile a kernel
@@ -23,9 +19,9 @@ config M486
23 19
24 Here are the settings recommended for greatest speed: 20 Here are the settings recommended for greatest speed:
25 - "486" for the AMD/Cyrix/IBM/Intel 486DX/DX2/DX4 or 21 - "486" for the AMD/Cyrix/IBM/Intel 486DX/DX2/DX4 or
26 SL/SLC/SLC2/SLC3/SX/SX2 and UMC U5D or U5S. 22 SL/SLC/SLC2/SLC3/SX/SX2 and UMC U5D or U5S.
27 - "586" for generic Pentium CPUs lacking the TSC 23 - "586" for generic Pentium CPUs lacking the TSC
28 (time stamp counter) register. 24 (time stamp counter) register.
29 - "Pentium-Classic" for the Intel Pentium. 25 - "Pentium-Classic" for the Intel Pentium.
30 - "Pentium-MMX" for the Intel Pentium MMX. 26 - "Pentium-MMX" for the Intel Pentium MMX.
31 - "Pentium-Pro" for the Intel Pentium Pro. 27 - "Pentium-Pro" for the Intel Pentium Pro.
@@ -34,17 +30,31 @@ config M486
34 - "Pentium-4" for the Intel Pentium 4 or P4-based Celeron. 30 - "Pentium-4" for the Intel Pentium 4 or P4-based Celeron.
35 - "K6" for the AMD K6, K6-II and K6-III (aka K6-3D). 31 - "K6" for the AMD K6, K6-II and K6-III (aka K6-3D).
36 - "Athlon" for the AMD K7 family (Athlon/Duron/Thunderbird). 32 - "Athlon" for the AMD K7 family (Athlon/Duron/Thunderbird).
33 - "Opteron/Athlon64/Hammer/K8" for all K8 and newer AMD CPUs.
37 - "Crusoe" for the Transmeta Crusoe series. 34 - "Crusoe" for the Transmeta Crusoe series.
38 - "Efficeon" for the Transmeta Efficeon series. 35 - "Efficeon" for the Transmeta Efficeon series.
39 - "Winchip-C6" for original IDT Winchip. 36 - "Winchip-C6" for original IDT Winchip.
40 - "Winchip-2" for IDT Winchips with 3dNow! capabilities. 37 - "Winchip-2" for IDT Winchips with 3dNow! capabilities.
38 - "AMD Elan" for the 32-bit AMD Elan embedded CPU.
41 - "GeodeGX1" for Geode GX1 (Cyrix MediaGX). 39 - "GeodeGX1" for Geode GX1 (Cyrix MediaGX).
42 - "Geode GX/LX" For AMD Geode GX and LX processors. 40 - "Geode GX/LX" For AMD Geode GX and LX processors.
43 - "CyrixIII/VIA C3" for VIA Cyrix III or VIA C3. 41 - "CyrixIII/VIA C3" for VIA Cyrix III or VIA C3.
44 - "VIA C3-2" for VIA C3-2 "Nehemiah" (model 9 and above). 42 - "VIA C3-2" for VIA C3-2 "Nehemiah" (model 9 and above).
45 - "VIA C7" for VIA C7. 43 - "VIA C7" for VIA C7.
44 - "Intel P4" for the Pentium 4/Netburst microarchitecture.
45 - "Core 2/newer Xeon" for all core2 and newer Intel CPUs.
46 - "Intel Atom" for the Atom-microarchitecture CPUs.
47 - "Generic-x86-64" for a kernel which runs on any x86-64 CPU.
48
49 See each option's help text for additional details. If you don't know
50 what to do, choose "486".
46 51
47 If you don't know what to do, choose "486". 52config M486
53 bool "486"
54 depends on X86_32
55 ---help---
56 Select this for an 486-class CPU such as AMD/Cyrix/IBM/Intel
57 486DX/DX2/DX4 or SL/SLC/SLC2/SLC3/SX/SX2 and UMC U5D or U5S.
48 58
49config M586 59config M586
50 bool "586/K5/5x86/6x86/6x86MX" 60 bool "586/K5/5x86/6x86/6x86MX"
diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h
index 9727b3b48bd1..e4f8010f22e0 100644
--- a/arch/x86/include/asm/cpufeature.h
+++ b/arch/x86/include/asm/cpufeature.h
@@ -12,7 +12,7 @@
12#include <asm/disabled-features.h> 12#include <asm/disabled-features.h>
13#endif 13#endif
14 14
15#define NCAPINTS 13 /* N 32-bit words worth of info */ 15#define NCAPINTS 14 /* N 32-bit words worth of info */
16#define NBUGINTS 1 /* N 32-bit bug flags */ 16#define NBUGINTS 1 /* N 32-bit bug flags */
17 17
18/* 18/*
@@ -255,6 +255,9 @@
255/* Intel-defined CPU QoS Sub-leaf, CPUID level 0x0000000F:1 (edx), word 12 */ 255/* Intel-defined CPU QoS Sub-leaf, CPUID level 0x0000000F:1 (edx), word 12 */
256#define X86_FEATURE_CQM_OCCUP_LLC (12*32+ 0) /* LLC occupancy monitoring if 1 */ 256#define X86_FEATURE_CQM_OCCUP_LLC (12*32+ 0) /* LLC occupancy monitoring if 1 */
257 257
258/* AMD-defined CPU features, CPUID level 0x80000008 (ebx), word 13 */
259#define X86_FEATURE_CLZERO (13*32+0) /* CLZERO instruction */
260
258/* 261/*
259 * BUG word(s) 262 * BUG word(s)
260 */ 263 */
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
index de22ea7ff82f..4ddd780aeac9 100644
--- a/arch/x86/kernel/cpu/common.c
+++ b/arch/x86/kernel/cpu/common.c
@@ -670,6 +670,7 @@ void get_cpu_cap(struct cpuinfo_x86 *c)
670 670
671 c->x86_virt_bits = (eax >> 8) & 0xff; 671 c->x86_virt_bits = (eax >> 8) & 0xff;
672 c->x86_phys_bits = eax & 0xff; 672 c->x86_phys_bits = eax & 0xff;
673 c->x86_capability[13] = cpuid_ebx(0x80000008);
673 } 674 }
674#ifdef CONFIG_X86_32 675#ifdef CONFIG_X86_32
675 else if (cpu_has(c, X86_FEATURE_PAE) || cpu_has(c, X86_FEATURE_PSE36)) 676 else if (cpu_has(c, X86_FEATURE_PAE) || cpu_has(c, X86_FEATURE_PSE36))