Linux Audio

Check our new training course

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