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