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