xref: /OK3568_Linux_fs/kernel/arch/x86/Kconfig.cpu (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0
2*4882a593Smuzhiyun# Put here option for CPU selection and depending optimization
3*4882a593Smuzhiyunchoice
4*4882a593Smuzhiyun	prompt "Processor family"
5*4882a593Smuzhiyun	default M686 if X86_32
6*4882a593Smuzhiyun	default GENERIC_CPU if X86_64
7*4882a593Smuzhiyun	help
8*4882a593Smuzhiyun	  This is the processor type of your CPU. This information is
9*4882a593Smuzhiyun	  used for optimizing purposes. In order to compile a kernel
10*4882a593Smuzhiyun	  that can run on all supported x86 CPU types (albeit not
11*4882a593Smuzhiyun	  optimally fast), you can specify "486" here.
12*4882a593Smuzhiyun
13*4882a593Smuzhiyun	  Note that the 386 is no longer supported, this includes
14*4882a593Smuzhiyun	  AMD/Cyrix/Intel 386DX/DXL/SL/SLC/SX, Cyrix/TI 486DLC/DLC2,
15*4882a593Smuzhiyun	  UMC 486SX-S and the NexGen Nx586.
16*4882a593Smuzhiyun
17*4882a593Smuzhiyun	  The kernel will not necessarily run on earlier architectures than
18*4882a593Smuzhiyun	  the one you have chosen, e.g. a Pentium optimized kernel will run on
19*4882a593Smuzhiyun	  a PPro, but not necessarily on a i486.
20*4882a593Smuzhiyun
21*4882a593Smuzhiyun	  Here are the settings recommended for greatest speed:
22*4882a593Smuzhiyun	  - "486" for the AMD/Cyrix/IBM/Intel 486DX/DX2/DX4 or
23*4882a593Smuzhiyun	    SL/SLC/SLC2/SLC3/SX/SX2 and UMC U5D or U5S.
24*4882a593Smuzhiyun	  - "586" for generic Pentium CPUs lacking the TSC
25*4882a593Smuzhiyun	    (time stamp counter) register.
26*4882a593Smuzhiyun	  - "Pentium-Classic" for the Intel Pentium.
27*4882a593Smuzhiyun	  - "Pentium-MMX" for the Intel Pentium MMX.
28*4882a593Smuzhiyun	  - "Pentium-Pro" for the Intel Pentium Pro.
29*4882a593Smuzhiyun	  - "Pentium-II" for the Intel Pentium II or pre-Coppermine Celeron.
30*4882a593Smuzhiyun	  - "Pentium-III" for the Intel Pentium III or Coppermine Celeron.
31*4882a593Smuzhiyun	  - "Pentium-4" for the Intel Pentium 4 or P4-based Celeron.
32*4882a593Smuzhiyun	  - "K6" for the AMD K6, K6-II and K6-III (aka K6-3D).
33*4882a593Smuzhiyun	  - "Athlon" for the AMD K7 family (Athlon/Duron/Thunderbird).
34*4882a593Smuzhiyun	  - "Opteron/Athlon64/Hammer/K8" for all K8 and newer AMD CPUs.
35*4882a593Smuzhiyun	  - "Crusoe" for the Transmeta Crusoe series.
36*4882a593Smuzhiyun	  - "Efficeon" for the Transmeta Efficeon series.
37*4882a593Smuzhiyun	  - "Winchip-C6" for original IDT Winchip.
38*4882a593Smuzhiyun	  - "Winchip-2" for IDT Winchips with 3dNow! capabilities.
39*4882a593Smuzhiyun	  - "AMD Elan" for the 32-bit AMD Elan embedded CPU.
40*4882a593Smuzhiyun	  - "GeodeGX1" for Geode GX1 (Cyrix MediaGX).
41*4882a593Smuzhiyun	  - "Geode GX/LX" For AMD Geode GX and LX processors.
42*4882a593Smuzhiyun	  - "CyrixIII/VIA C3" for VIA Cyrix III or VIA C3.
43*4882a593Smuzhiyun	  - "VIA C3-2" for VIA C3-2 "Nehemiah" (model 9 and above).
44*4882a593Smuzhiyun	  - "VIA C7" for VIA C7.
45*4882a593Smuzhiyun	  - "Intel P4" for the Pentium 4/Netburst microarchitecture.
46*4882a593Smuzhiyun	  - "Core 2/newer Xeon" for all core2 and newer Intel CPUs.
47*4882a593Smuzhiyun	  - "Intel Atom" for the Atom-microarchitecture CPUs.
48*4882a593Smuzhiyun	  - "Generic-x86-64" for a kernel which runs on any x86-64 CPU.
49*4882a593Smuzhiyun
50*4882a593Smuzhiyun	  See each option's help text for additional details. If you don't know
51*4882a593Smuzhiyun	  what to do, choose "486".
52*4882a593Smuzhiyun
53*4882a593Smuzhiyunconfig M486SX
54*4882a593Smuzhiyun	bool "486SX"
55*4882a593Smuzhiyun	depends on X86_32
56*4882a593Smuzhiyun	help
57*4882a593Smuzhiyun	  Select this for an 486-class CPU without an FPU such as
58*4882a593Smuzhiyun	  AMD/Cyrix/IBM/Intel SL/SLC/SLC2/SLC3/SX/SX2 and UMC U5S.
59*4882a593Smuzhiyun
60*4882a593Smuzhiyunconfig M486
61*4882a593Smuzhiyun	bool "486DX"
62*4882a593Smuzhiyun	depends on X86_32
63*4882a593Smuzhiyun	help
64*4882a593Smuzhiyun	  Select this for an 486-class CPU such as AMD/Cyrix/IBM/Intel
65*4882a593Smuzhiyun	  486DX/DX2/DX4 and UMC U5D.
66*4882a593Smuzhiyun
67*4882a593Smuzhiyunconfig M586
68*4882a593Smuzhiyun	bool "586/K5/5x86/6x86/6x86MX"
69*4882a593Smuzhiyun	depends on X86_32
70*4882a593Smuzhiyun	help
71*4882a593Smuzhiyun	  Select this for an 586 or 686 series processor such as the AMD K5,
72*4882a593Smuzhiyun	  the Cyrix 5x86, 6x86 and 6x86MX.  This choice does not
73*4882a593Smuzhiyun	  assume the RDTSC (Read Time Stamp Counter) instruction.
74*4882a593Smuzhiyun
75*4882a593Smuzhiyunconfig M586TSC
76*4882a593Smuzhiyun	bool "Pentium-Classic"
77*4882a593Smuzhiyun	depends on X86_32
78*4882a593Smuzhiyun	help
79*4882a593Smuzhiyun	  Select this for a Pentium Classic processor with the RDTSC (Read
80*4882a593Smuzhiyun	  Time Stamp Counter) instruction for benchmarking.
81*4882a593Smuzhiyun
82*4882a593Smuzhiyunconfig M586MMX
83*4882a593Smuzhiyun	bool "Pentium-MMX"
84*4882a593Smuzhiyun	depends on X86_32
85*4882a593Smuzhiyun	help
86*4882a593Smuzhiyun	  Select this for a Pentium with the MMX graphics/multimedia
87*4882a593Smuzhiyun	  extended instructions.
88*4882a593Smuzhiyun
89*4882a593Smuzhiyunconfig M686
90*4882a593Smuzhiyun	bool "Pentium-Pro"
91*4882a593Smuzhiyun	depends on X86_32
92*4882a593Smuzhiyun	help
93*4882a593Smuzhiyun	  Select this for Intel Pentium Pro chips.  This enables the use of
94*4882a593Smuzhiyun	  Pentium Pro extended instructions, and disables the init-time guard
95*4882a593Smuzhiyun	  against the f00f bug found in earlier Pentiums.
96*4882a593Smuzhiyun
97*4882a593Smuzhiyunconfig MPENTIUMII
98*4882a593Smuzhiyun	bool "Pentium-II/Celeron(pre-Coppermine)"
99*4882a593Smuzhiyun	depends on X86_32
100*4882a593Smuzhiyun	help
101*4882a593Smuzhiyun	  Select this for Intel chips based on the Pentium-II and
102*4882a593Smuzhiyun	  pre-Coppermine Celeron core.  This option enables an unaligned
103*4882a593Smuzhiyun	  copy optimization, compiles the kernel with optimization flags
104*4882a593Smuzhiyun	  tailored for the chip, and applies any applicable Pentium Pro
105*4882a593Smuzhiyun	  optimizations.
106*4882a593Smuzhiyun
107*4882a593Smuzhiyunconfig MPENTIUMIII
108*4882a593Smuzhiyun	bool "Pentium-III/Celeron(Coppermine)/Pentium-III Xeon"
109*4882a593Smuzhiyun	depends on X86_32
110*4882a593Smuzhiyun	help
111*4882a593Smuzhiyun	  Select this for Intel chips based on the Pentium-III and
112*4882a593Smuzhiyun	  Celeron-Coppermine core.  This option enables use of some
113*4882a593Smuzhiyun	  extended prefetch instructions in addition to the Pentium II
114*4882a593Smuzhiyun	  extensions.
115*4882a593Smuzhiyun
116*4882a593Smuzhiyunconfig MPENTIUMM
117*4882a593Smuzhiyun	bool "Pentium M"
118*4882a593Smuzhiyun	depends on X86_32
119*4882a593Smuzhiyun	help
120*4882a593Smuzhiyun	  Select this for Intel Pentium M (not Pentium-4 M)
121*4882a593Smuzhiyun	  notebook chips.
122*4882a593Smuzhiyun
123*4882a593Smuzhiyunconfig MPENTIUM4
124*4882a593Smuzhiyun	bool "Pentium-4/Celeron(P4-based)/Pentium-4 M/older Xeon"
125*4882a593Smuzhiyun	depends on X86_32
126*4882a593Smuzhiyun	help
127*4882a593Smuzhiyun	  Select this for Intel Pentium 4 chips.  This includes the
128*4882a593Smuzhiyun	  Pentium 4, Pentium D, P4-based Celeron and Xeon, and
129*4882a593Smuzhiyun	  Pentium-4 M (not Pentium M) chips.  This option enables compile
130*4882a593Smuzhiyun	  flags optimized for the chip, uses the correct cache line size, and
131*4882a593Smuzhiyun	  applies any applicable optimizations.
132*4882a593Smuzhiyun
133*4882a593Smuzhiyun	  CPUIDs: F[0-6][1-A] (in /proc/cpuinfo show = cpu family : 15 )
134*4882a593Smuzhiyun
135*4882a593Smuzhiyun	  Select this for:
136*4882a593Smuzhiyun	    Pentiums (Pentium 4, Pentium D, Celeron, Celeron D) corename:
137*4882a593Smuzhiyun		-Willamette
138*4882a593Smuzhiyun		-Northwood
139*4882a593Smuzhiyun		-Mobile Pentium 4
140*4882a593Smuzhiyun		-Mobile Pentium 4 M
141*4882a593Smuzhiyun		-Extreme Edition (Gallatin)
142*4882a593Smuzhiyun		-Prescott
143*4882a593Smuzhiyun		-Prescott 2M
144*4882a593Smuzhiyun		-Cedar Mill
145*4882a593Smuzhiyun		-Presler
146*4882a593Smuzhiyun		-Smithfiled
147*4882a593Smuzhiyun	    Xeons (Intel Xeon, Xeon MP, Xeon LV, Xeon MV) corename:
148*4882a593Smuzhiyun		-Foster
149*4882a593Smuzhiyun		-Prestonia
150*4882a593Smuzhiyun		-Gallatin
151*4882a593Smuzhiyun		-Nocona
152*4882a593Smuzhiyun		-Irwindale
153*4882a593Smuzhiyun		-Cranford
154*4882a593Smuzhiyun		-Potomac
155*4882a593Smuzhiyun		-Paxville
156*4882a593Smuzhiyun		-Dempsey
157*4882a593Smuzhiyun
158*4882a593Smuzhiyun
159*4882a593Smuzhiyunconfig MK6
160*4882a593Smuzhiyun	bool "K6/K6-II/K6-III"
161*4882a593Smuzhiyun	depends on X86_32
162*4882a593Smuzhiyun	help
163*4882a593Smuzhiyun	  Select this for an AMD K6-family processor.  Enables use of
164*4882a593Smuzhiyun	  some extended instructions, and passes appropriate optimization
165*4882a593Smuzhiyun	  flags to GCC.
166*4882a593Smuzhiyun
167*4882a593Smuzhiyunconfig MK7
168*4882a593Smuzhiyun	bool "Athlon/Duron/K7"
169*4882a593Smuzhiyun	depends on X86_32
170*4882a593Smuzhiyun	help
171*4882a593Smuzhiyun	  Select this for an AMD Athlon K7-family processor.  Enables use of
172*4882a593Smuzhiyun	  some extended instructions, and passes appropriate optimization
173*4882a593Smuzhiyun	  flags to GCC.
174*4882a593Smuzhiyun
175*4882a593Smuzhiyunconfig MK8
176*4882a593Smuzhiyun	bool "Opteron/Athlon64/Hammer/K8"
177*4882a593Smuzhiyun	help
178*4882a593Smuzhiyun	  Select this for an AMD Opteron or Athlon64 Hammer-family processor.
179*4882a593Smuzhiyun	  Enables use of some extended instructions, and passes appropriate
180*4882a593Smuzhiyun	  optimization flags to GCC.
181*4882a593Smuzhiyun
182*4882a593Smuzhiyunconfig MCRUSOE
183*4882a593Smuzhiyun	bool "Crusoe"
184*4882a593Smuzhiyun	depends on X86_32
185*4882a593Smuzhiyun	help
186*4882a593Smuzhiyun	  Select this for a Transmeta Crusoe processor.  Treats the processor
187*4882a593Smuzhiyun	  like a 586 with TSC, and sets some GCC optimization flags (like a
188*4882a593Smuzhiyun	  Pentium Pro with no alignment requirements).
189*4882a593Smuzhiyun
190*4882a593Smuzhiyunconfig MEFFICEON
191*4882a593Smuzhiyun	bool "Efficeon"
192*4882a593Smuzhiyun	depends on X86_32
193*4882a593Smuzhiyun	help
194*4882a593Smuzhiyun	  Select this for a Transmeta Efficeon processor.
195*4882a593Smuzhiyun
196*4882a593Smuzhiyunconfig MWINCHIPC6
197*4882a593Smuzhiyun	bool "Winchip-C6"
198*4882a593Smuzhiyun	depends on X86_32
199*4882a593Smuzhiyun	help
200*4882a593Smuzhiyun	  Select this for an IDT Winchip C6 chip.  Linux and GCC
201*4882a593Smuzhiyun	  treat this chip as a 586TSC with some extended instructions
202*4882a593Smuzhiyun	  and alignment requirements.
203*4882a593Smuzhiyun
204*4882a593Smuzhiyunconfig MWINCHIP3D
205*4882a593Smuzhiyun	bool "Winchip-2/Winchip-2A/Winchip-3"
206*4882a593Smuzhiyun	depends on X86_32
207*4882a593Smuzhiyun	help
208*4882a593Smuzhiyun	  Select this for an IDT Winchip-2, 2A or 3.  Linux and GCC
209*4882a593Smuzhiyun	  treat this chip as a 586TSC with some extended instructions
210*4882a593Smuzhiyun	  and alignment requirements.  Also enable out of order memory
211*4882a593Smuzhiyun	  stores for this CPU, which can increase performance of some
212*4882a593Smuzhiyun	  operations.
213*4882a593Smuzhiyun
214*4882a593Smuzhiyunconfig MELAN
215*4882a593Smuzhiyun	bool "AMD Elan"
216*4882a593Smuzhiyun	depends on X86_32
217*4882a593Smuzhiyun	help
218*4882a593Smuzhiyun	  Select this for an AMD Elan processor.
219*4882a593Smuzhiyun
220*4882a593Smuzhiyun	  Do not use this option for K6/Athlon/Opteron processors!
221*4882a593Smuzhiyun
222*4882a593Smuzhiyunconfig MGEODEGX1
223*4882a593Smuzhiyun	bool "GeodeGX1"
224*4882a593Smuzhiyun	depends on X86_32
225*4882a593Smuzhiyun	help
226*4882a593Smuzhiyun	  Select this for a Geode GX1 (Cyrix MediaGX) chip.
227*4882a593Smuzhiyun
228*4882a593Smuzhiyunconfig MGEODE_LX
229*4882a593Smuzhiyun	bool "Geode GX/LX"
230*4882a593Smuzhiyun	depends on X86_32
231*4882a593Smuzhiyun	help
232*4882a593Smuzhiyun	  Select this for AMD Geode GX and LX processors.
233*4882a593Smuzhiyun
234*4882a593Smuzhiyunconfig MCYRIXIII
235*4882a593Smuzhiyun	bool "CyrixIII/VIA-C3"
236*4882a593Smuzhiyun	depends on X86_32
237*4882a593Smuzhiyun	help
238*4882a593Smuzhiyun	  Select this for a Cyrix III or C3 chip.  Presently Linux and GCC
239*4882a593Smuzhiyun	  treat this chip as a generic 586. Whilst the CPU is 686 class,
240*4882a593Smuzhiyun	  it lacks the cmov extension which gcc assumes is present when
241*4882a593Smuzhiyun	  generating 686 code.
242*4882a593Smuzhiyun	  Note that Nehemiah (Model 9) and above will not boot with this
243*4882a593Smuzhiyun	  kernel due to them lacking the 3DNow! instructions used in earlier
244*4882a593Smuzhiyun	  incarnations of the CPU.
245*4882a593Smuzhiyun
246*4882a593Smuzhiyunconfig MVIAC3_2
247*4882a593Smuzhiyun	bool "VIA C3-2 (Nehemiah)"
248*4882a593Smuzhiyun	depends on X86_32
249*4882a593Smuzhiyun	help
250*4882a593Smuzhiyun	  Select this for a VIA C3 "Nehemiah". Selecting this enables usage
251*4882a593Smuzhiyun	  of SSE and tells gcc to treat the CPU as a 686.
252*4882a593Smuzhiyun	  Note, this kernel will not boot on older (pre model 9) C3s.
253*4882a593Smuzhiyun
254*4882a593Smuzhiyunconfig MVIAC7
255*4882a593Smuzhiyun	bool "VIA C7"
256*4882a593Smuzhiyun	depends on X86_32
257*4882a593Smuzhiyun	help
258*4882a593Smuzhiyun	  Select this for a VIA C7.  Selecting this uses the correct cache
259*4882a593Smuzhiyun	  shift and tells gcc to treat the CPU as a 686.
260*4882a593Smuzhiyun
261*4882a593Smuzhiyunconfig MPSC
262*4882a593Smuzhiyun	bool "Intel P4 / older Netburst based Xeon"
263*4882a593Smuzhiyun	depends on X86_64
264*4882a593Smuzhiyun	help
265*4882a593Smuzhiyun	  Optimize for Intel Pentium 4, Pentium D and older Nocona/Dempsey
266*4882a593Smuzhiyun	  Xeon CPUs with Intel 64bit which is compatible with x86-64.
267*4882a593Smuzhiyun	  Note that the latest Xeons (Xeon 51xx and 53xx) are not based on the
268*4882a593Smuzhiyun	  Netburst core and shouldn't use this option. You can distinguish them
269*4882a593Smuzhiyun	  using the cpu family field
270*4882a593Smuzhiyun	  in /proc/cpuinfo. Family 15 is an older Xeon, Family 6 a newer one.
271*4882a593Smuzhiyun
272*4882a593Smuzhiyunconfig MCORE2
273*4882a593Smuzhiyun	bool "Core 2/newer Xeon"
274*4882a593Smuzhiyun	help
275*4882a593Smuzhiyun
276*4882a593Smuzhiyun	  Select this for Intel Core 2 and newer Core 2 Xeons (Xeon 51xx and
277*4882a593Smuzhiyun	  53xx) CPUs. You can distinguish newer from older Xeons by the CPU
278*4882a593Smuzhiyun	  family in /proc/cpuinfo. Newer ones have 6 and older ones 15
279*4882a593Smuzhiyun	  (not a typo)
280*4882a593Smuzhiyun
281*4882a593Smuzhiyunconfig MATOM
282*4882a593Smuzhiyun	bool "Intel Atom"
283*4882a593Smuzhiyun	help
284*4882a593Smuzhiyun
285*4882a593Smuzhiyun	  Select this for the Intel Atom platform. Intel Atom CPUs have an
286*4882a593Smuzhiyun	  in-order pipelining architecture and thus can benefit from
287*4882a593Smuzhiyun	  accordingly optimized code. Use a recent GCC with specific Atom
288*4882a593Smuzhiyun	  support in order to fully benefit from selecting this option.
289*4882a593Smuzhiyun
290*4882a593Smuzhiyunconfig GENERIC_CPU
291*4882a593Smuzhiyun	bool "Generic-x86-64"
292*4882a593Smuzhiyun	depends on X86_64
293*4882a593Smuzhiyun	help
294*4882a593Smuzhiyun	  Generic x86-64 CPU.
295*4882a593Smuzhiyun	  Run equally well on all x86-64 CPUs.
296*4882a593Smuzhiyun
297*4882a593Smuzhiyunendchoice
298*4882a593Smuzhiyun
299*4882a593Smuzhiyunconfig X86_GENERIC
300*4882a593Smuzhiyun	bool "Generic x86 support"
301*4882a593Smuzhiyun	depends on X86_32
302*4882a593Smuzhiyun	help
303*4882a593Smuzhiyun	  Instead of just including optimizations for the selected
304*4882a593Smuzhiyun	  x86 variant (e.g. PII, Crusoe or Athlon), include some more
305*4882a593Smuzhiyun	  generic optimizations as well. This will make the kernel
306*4882a593Smuzhiyun	  perform better on x86 CPUs other than that selected.
307*4882a593Smuzhiyun
308*4882a593Smuzhiyun	  This is really intended for distributors who need more
309*4882a593Smuzhiyun	  generic optimizations.
310*4882a593Smuzhiyun
311*4882a593Smuzhiyun#
312*4882a593Smuzhiyun# Define implied options from the CPU selection here
313*4882a593Smuzhiyunconfig X86_INTERNODE_CACHE_SHIFT
314*4882a593Smuzhiyun	int
315*4882a593Smuzhiyun	default "12" if X86_VSMP
316*4882a593Smuzhiyun	default X86_L1_CACHE_SHIFT
317*4882a593Smuzhiyun
318*4882a593Smuzhiyunconfig X86_L1_CACHE_SHIFT
319*4882a593Smuzhiyun	int
320*4882a593Smuzhiyun	default "7" if MPENTIUM4 || MPSC
321*4882a593Smuzhiyun	default "6" if MK7 || MK8 || MPENTIUMM || MCORE2 || MATOM || MVIAC7 || X86_GENERIC || GENERIC_CPU
322*4882a593Smuzhiyun	default "4" if MELAN || M486SX || M486 || MGEODEGX1
323*4882a593Smuzhiyun	default "5" if MWINCHIP3D || MWINCHIPC6 || MCRUSOE || MEFFICEON || MCYRIXIII || MK6 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || M586 || MVIAC3_2 || MGEODE_LX
324*4882a593Smuzhiyun
325*4882a593Smuzhiyunconfig X86_F00F_BUG
326*4882a593Smuzhiyun	def_bool y
327*4882a593Smuzhiyun	depends on M586MMX || M586TSC || M586 || M486SX || M486
328*4882a593Smuzhiyun
329*4882a593Smuzhiyunconfig X86_INVD_BUG
330*4882a593Smuzhiyun	def_bool y
331*4882a593Smuzhiyun	depends on M486SX || M486
332*4882a593Smuzhiyun
333*4882a593Smuzhiyunconfig X86_ALIGNMENT_16
334*4882a593Smuzhiyun	def_bool y
335*4882a593Smuzhiyun	depends on MWINCHIP3D || MWINCHIPC6 || MCYRIXIII || MELAN || MK6 || M586MMX || M586TSC || M586 || M486SX || M486 || MVIAC3_2 || MGEODEGX1
336*4882a593Smuzhiyun
337*4882a593Smuzhiyunconfig X86_INTEL_USERCOPY
338*4882a593Smuzhiyun	def_bool y
339*4882a593Smuzhiyun	depends on MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M586MMX || X86_GENERIC || MK8 || MK7 || MEFFICEON || MCORE2
340*4882a593Smuzhiyun
341*4882a593Smuzhiyunconfig X86_USE_PPRO_CHECKSUM
342*4882a593Smuzhiyun	def_bool y
343*4882a593Smuzhiyun	depends on MWINCHIP3D || MWINCHIPC6 || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MK8 || MVIAC3_2 || MVIAC7 || MEFFICEON || MGEODE_LX || MCORE2 || MATOM
344*4882a593Smuzhiyun
345*4882a593Smuzhiyunconfig X86_USE_3DNOW
346*4882a593Smuzhiyun	def_bool y
347*4882a593Smuzhiyun	depends on (MCYRIXIII || MK7 || MGEODE_LX) && !UML
348*4882a593Smuzhiyun
349*4882a593Smuzhiyun#
350*4882a593Smuzhiyun# P6_NOPs are a relatively minor optimization that require a family >=
351*4882a593Smuzhiyun# 6 processor, except that it is broken on certain VIA chips.
352*4882a593Smuzhiyun# Furthermore, AMD chips prefer a totally different sequence of NOPs
353*4882a593Smuzhiyun# (which work on all CPUs).  In addition, it looks like Virtual PC
354*4882a593Smuzhiyun# does not understand them.
355*4882a593Smuzhiyun#
356*4882a593Smuzhiyun# As a result, disallow these if we're not compiling for X86_64 (these
357*4882a593Smuzhiyun# NOPs do work on all x86-64 capable chips); the list of processors in
358*4882a593Smuzhiyun# the right-hand clause are the cores that benefit from this optimization.
359*4882a593Smuzhiyun#
360*4882a593Smuzhiyunconfig X86_P6_NOP
361*4882a593Smuzhiyun	def_bool y
362*4882a593Smuzhiyun	depends on X86_64
363*4882a593Smuzhiyun	depends on (MCORE2 || MPENTIUM4 || MPSC)
364*4882a593Smuzhiyun
365*4882a593Smuzhiyunconfig X86_TSC
366*4882a593Smuzhiyun	def_bool y
367*4882a593Smuzhiyun	depends on (MWINCHIP3D || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2 || MVIAC7 || MGEODEGX1 || MGEODE_LX || MCORE2 || MATOM) || X86_64
368*4882a593Smuzhiyun
369*4882a593Smuzhiyunconfig X86_CMPXCHG64
370*4882a593Smuzhiyun	def_bool y
371*4882a593Smuzhiyun	depends on X86_PAE || X86_64 || MCORE2 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586TSC || M586MMX || MATOM || MGEODE_LX || MGEODEGX1 || MK6 || MK7 || MK8
372*4882a593Smuzhiyun
373*4882a593Smuzhiyun# this should be set for all -march=.. options where the compiler
374*4882a593Smuzhiyun# generates cmov.
375*4882a593Smuzhiyunconfig X86_CMOV
376*4882a593Smuzhiyun	def_bool y
377*4882a593Smuzhiyun	depends on (MK8 || MK7 || MCORE2 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MCRUSOE || MEFFICEON || X86_64 || MATOM || MGEODE_LX)
378*4882a593Smuzhiyun
379*4882a593Smuzhiyunconfig X86_MINIMUM_CPU_FAMILY
380*4882a593Smuzhiyun	int
381*4882a593Smuzhiyun	default "64" if X86_64
382*4882a593Smuzhiyun	default "6" if X86_32 && (MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MEFFICEON || MATOM || MCRUSOE || MCORE2 || MK7 || MK8)
383*4882a593Smuzhiyun	default "5" if X86_32 && X86_CMPXCHG64
384*4882a593Smuzhiyun	default "4"
385*4882a593Smuzhiyun
386*4882a593Smuzhiyunconfig X86_DEBUGCTLMSR
387*4882a593Smuzhiyun	def_bool y
388*4882a593Smuzhiyun	depends on !(MK6 || MWINCHIPC6 || MWINCHIP3D || MCYRIXIII || M586MMX || M586TSC || M586 || M486SX || M486) && !UML
389*4882a593Smuzhiyun
390*4882a593Smuzhiyunconfig IA32_FEAT_CTL
391*4882a593Smuzhiyun	def_bool y
392*4882a593Smuzhiyun	depends on CPU_SUP_INTEL || CPU_SUP_CENTAUR || CPU_SUP_ZHAOXIN
393*4882a593Smuzhiyun
394*4882a593Smuzhiyunconfig X86_VMX_FEATURE_NAMES
395*4882a593Smuzhiyun	def_bool y
396*4882a593Smuzhiyun	depends on IA32_FEAT_CTL && X86_FEATURE_NAMES
397*4882a593Smuzhiyun
398*4882a593Smuzhiyunmenuconfig PROCESSOR_SELECT
399*4882a593Smuzhiyun	bool "Supported processor vendors" if EXPERT
400*4882a593Smuzhiyun	help
401*4882a593Smuzhiyun	  This lets you choose what x86 vendor support code your kernel
402*4882a593Smuzhiyun	  will include.
403*4882a593Smuzhiyun
404*4882a593Smuzhiyunconfig CPU_SUP_INTEL
405*4882a593Smuzhiyun	default y
406*4882a593Smuzhiyun	bool "Support Intel processors" if PROCESSOR_SELECT
407*4882a593Smuzhiyun	help
408*4882a593Smuzhiyun	  This enables detection, tunings and quirks for Intel processors
409*4882a593Smuzhiyun
410*4882a593Smuzhiyun	  You need this enabled if you want your kernel to run on an
411*4882a593Smuzhiyun	  Intel CPU. Disabling this option on other types of CPUs
412*4882a593Smuzhiyun	  makes the kernel a tiny bit smaller. Disabling it on an Intel
413*4882a593Smuzhiyun	  CPU might render the kernel unbootable.
414*4882a593Smuzhiyun
415*4882a593Smuzhiyun	  If unsure, say N.
416*4882a593Smuzhiyun
417*4882a593Smuzhiyunconfig CPU_SUP_CYRIX_32
418*4882a593Smuzhiyun	default y
419*4882a593Smuzhiyun	bool "Support Cyrix processors" if PROCESSOR_SELECT
420*4882a593Smuzhiyun	depends on M486SX || M486 || M586 || M586TSC || M586MMX || (EXPERT && !64BIT)
421*4882a593Smuzhiyun	help
422*4882a593Smuzhiyun	  This enables detection, tunings and quirks for Cyrix processors
423*4882a593Smuzhiyun
424*4882a593Smuzhiyun	  You need this enabled if you want your kernel to run on a
425*4882a593Smuzhiyun	  Cyrix CPU. Disabling this option on other types of CPUs
426*4882a593Smuzhiyun	  makes the kernel a tiny bit smaller. Disabling it on a Cyrix
427*4882a593Smuzhiyun	  CPU might render the kernel unbootable.
428*4882a593Smuzhiyun
429*4882a593Smuzhiyun	  If unsure, say N.
430*4882a593Smuzhiyun
431*4882a593Smuzhiyunconfig CPU_SUP_AMD
432*4882a593Smuzhiyun	default y
433*4882a593Smuzhiyun	bool "Support AMD processors" if PROCESSOR_SELECT
434*4882a593Smuzhiyun	help
435*4882a593Smuzhiyun	  This enables detection, tunings and quirks for AMD processors
436*4882a593Smuzhiyun
437*4882a593Smuzhiyun	  You need this enabled if you want your kernel to run on an
438*4882a593Smuzhiyun	  AMD CPU. Disabling this option on other types of CPUs
439*4882a593Smuzhiyun	  makes the kernel a tiny bit smaller. Disabling it on an AMD
440*4882a593Smuzhiyun	  CPU might render the kernel unbootable.
441*4882a593Smuzhiyun
442*4882a593Smuzhiyun	  If unsure, say N.
443*4882a593Smuzhiyun
444*4882a593Smuzhiyunconfig CPU_SUP_HYGON
445*4882a593Smuzhiyun	default y
446*4882a593Smuzhiyun	bool "Support Hygon processors" if PROCESSOR_SELECT
447*4882a593Smuzhiyun	select CPU_SUP_AMD
448*4882a593Smuzhiyun	help
449*4882a593Smuzhiyun	  This enables detection, tunings and quirks for Hygon processors
450*4882a593Smuzhiyun
451*4882a593Smuzhiyun	  You need this enabled if you want your kernel to run on an
452*4882a593Smuzhiyun	  Hygon CPU. Disabling this option on other types of CPUs
453*4882a593Smuzhiyun	  makes the kernel a tiny bit smaller. Disabling it on an Hygon
454*4882a593Smuzhiyun	  CPU might render the kernel unbootable.
455*4882a593Smuzhiyun
456*4882a593Smuzhiyun	  If unsure, say N.
457*4882a593Smuzhiyun
458*4882a593Smuzhiyunconfig CPU_SUP_CENTAUR
459*4882a593Smuzhiyun	default y
460*4882a593Smuzhiyun	bool "Support Centaur processors" if PROCESSOR_SELECT
461*4882a593Smuzhiyun	help
462*4882a593Smuzhiyun	  This enables detection, tunings and quirks for Centaur processors
463*4882a593Smuzhiyun
464*4882a593Smuzhiyun	  You need this enabled if you want your kernel to run on a
465*4882a593Smuzhiyun	  Centaur CPU. Disabling this option on other types of CPUs
466*4882a593Smuzhiyun	  makes the kernel a tiny bit smaller. Disabling it on a Centaur
467*4882a593Smuzhiyun	  CPU might render the kernel unbootable.
468*4882a593Smuzhiyun
469*4882a593Smuzhiyun	  If unsure, say N.
470*4882a593Smuzhiyun
471*4882a593Smuzhiyunconfig CPU_SUP_TRANSMETA_32
472*4882a593Smuzhiyun	default y
473*4882a593Smuzhiyun	bool "Support Transmeta processors" if PROCESSOR_SELECT
474*4882a593Smuzhiyun	depends on !64BIT
475*4882a593Smuzhiyun	help
476*4882a593Smuzhiyun	  This enables detection, tunings and quirks for Transmeta processors
477*4882a593Smuzhiyun
478*4882a593Smuzhiyun	  You need this enabled if you want your kernel to run on a
479*4882a593Smuzhiyun	  Transmeta CPU. Disabling this option on other types of CPUs
480*4882a593Smuzhiyun	  makes the kernel a tiny bit smaller. Disabling it on a Transmeta
481*4882a593Smuzhiyun	  CPU might render the kernel unbootable.
482*4882a593Smuzhiyun
483*4882a593Smuzhiyun	  If unsure, say N.
484*4882a593Smuzhiyun
485*4882a593Smuzhiyunconfig CPU_SUP_UMC_32
486*4882a593Smuzhiyun	default y
487*4882a593Smuzhiyun	bool "Support UMC processors" if PROCESSOR_SELECT
488*4882a593Smuzhiyun	depends on M486SX || M486 || (EXPERT && !64BIT)
489*4882a593Smuzhiyun	help
490*4882a593Smuzhiyun	  This enables detection, tunings and quirks for UMC processors
491*4882a593Smuzhiyun
492*4882a593Smuzhiyun	  You need this enabled if you want your kernel to run on a
493*4882a593Smuzhiyun	  UMC CPU. Disabling this option on other types of CPUs
494*4882a593Smuzhiyun	  makes the kernel a tiny bit smaller. Disabling it on a UMC
495*4882a593Smuzhiyun	  CPU might render the kernel unbootable.
496*4882a593Smuzhiyun
497*4882a593Smuzhiyun	  If unsure, say N.
498*4882a593Smuzhiyun
499*4882a593Smuzhiyunconfig CPU_SUP_ZHAOXIN
500*4882a593Smuzhiyun	default y
501*4882a593Smuzhiyun	bool "Support Zhaoxin processors" if PROCESSOR_SELECT
502*4882a593Smuzhiyun	help
503*4882a593Smuzhiyun	  This enables detection, tunings and quirks for Zhaoxin processors
504*4882a593Smuzhiyun
505*4882a593Smuzhiyun	  You need this enabled if you want your kernel to run on a
506*4882a593Smuzhiyun	  Zhaoxin CPU. Disabling this option on other types of CPUs
507*4882a593Smuzhiyun	  makes the kernel a tiny bit smaller. Disabling it on a Zhaoxin
508*4882a593Smuzhiyun	  CPU might render the kernel unbootable.
509*4882a593Smuzhiyun
510*4882a593Smuzhiyun	  If unsure, say N.
511