x86: make x86_32 use tlb_64.c, build fix, clean up X86_L1_CACHE_BYTES
[linux-2.6.git] / arch / x86 / Kconfig.cpu
index 018d68e..8eb50ba 100644 (file)
@@ -21,8 +21,8 @@ config M386
 
          Here are the settings recommended for greatest speed:
          - "386" for the AMD/Cyrix/Intel 386DX/DXL/SL/SLC/SX, Cyrix/TI
-         486DLC/DLC2, UMC 486SX-S and NexGen Nx586.  Only "386" kernels
-         will run on a 386 class machine.
+         486DLC/DLC2, and UMC 486SX-S.  Only "386" kernels will run on a 386
+         class machine.
          - "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
@@ -38,8 +38,7 @@ config M386
          - "Crusoe" for the Transmeta Crusoe series.
          - "Efficeon" for the Transmeta Efficeon series.
          - "Winchip-C6" for original IDT Winchip.
-         - "Winchip-2" for IDT Winchip 2.
-         - "Winchip-2A" for IDT Winchips with 3dNow! capabilities.
+         - "Winchip-2" for IDT Winchips with 3dNow! capabilities.
          - "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.
@@ -194,19 +193,11 @@ config MWINCHIPC6
          treat this chip as a 586TSC with some extended instructions
          and alignment requirements.
 
-config MWINCHIP2
-       bool "Winchip-2"
-       depends on X86_32
-       help
-         Select this for an IDT Winchip-2.  Linux and GCC
-         treat this chip as a 586TSC with some extended instructions
-         and alignment requirements.
-
 config MWINCHIP3D
-       bool "Winchip-2A/Winchip-3"
+       bool "Winchip-2/Winchip-2A/Winchip-3"
        depends on X86_32
        help
-         Select this for an IDT Winchip-2A or 3.  Linux and GCC
+         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
@@ -292,37 +283,49 @@ config X86_GENERIC
 
 endif
 
+config X86_CPU
+       def_bool y
+       select GENERIC_FIND_FIRST_BIT
+       select GENERIC_FIND_NEXT_BIT
+
 #
 # Define implied options from the CPU selection here
 config X86_L1_CACHE_BYTES
        int
-       default "128" if GENERIC_CPU || MPSC
-       default "64" if MK8 || MCORE2
-       depends on X86_64
+       default "128" if MPSC
+       default "64" if GENERIC_CPU || MK8 || MCORE2 || X86_32
 
 config X86_INTERNODE_CACHE_BYTES
        int
        default "4096" if X86_VSMP
        default X86_L1_CACHE_BYTES if !X86_VSMP
-       depends on X86_64
 
 config X86_CMPXCHG
        def_bool X86_64 || (X86_32 && !M386)
 
 config X86_L1_CACHE_SHIFT
        int
-       default "7" if MPENTIUM4 || X86_GENERIC || GENERIC_CPU || MPSC
+       default "7" if MPENTIUM4 || MPSC
        default "4" if X86_ELAN || M486 || M386 || MGEODEGX1
-       default "5" if MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCRUSOE || MEFFICEON || MCYRIXIII || MK6 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || M586 || MVIAC3_2 || MGEODE_LX
-       default "6" if MK7 || MK8 || MPENTIUMM || MCORE2 || MVIAC7
+       default "5" if MWINCHIP3D || MWINCHIPC6 || MCRUSOE || MEFFICEON || MCYRIXIII || MK6 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || M586 || MVIAC3_2 || MGEODE_LX
+       default "6" if MK7 || MK8 || MPENTIUMM || MCORE2 || MVIAC7 || X86_GENERIC || GENERIC_CPU
 
 config X86_XADD
        def_bool y
        depends on X86_32 && !M386
 
 config X86_PPRO_FENCE
-       def_bool y
+       bool "PentiumPro memory ordering errata workaround"
        depends on M686 || M586MMX || M586TSC || M586 || M486 || M386 || MGEODEGX1
+       help
+         Old PentiumPro multiprocessor systems had errata that could cause memory
+         operations to violate the x86 ordering standard in rare cases. Enabling this
+         option will attempt to work around some (but not all) occurances of
+         this problem, at the cost of much heavier spinlock and memory barrier
+         operations.
+
+         If unsure, say n here. Even distro kernels should think twice before enabling
+         this: there are few systems, and an unlikely bug.
 
 config X86_F00F_BUG
        def_bool y
@@ -330,7 +333,7 @@ config X86_F00F_BUG
 
 config X86_WP_WORKS_OK
        def_bool y
-       depends on X86_32 && !M386
+       depends on !M386
 
 config X86_INVLPG
        def_bool y
@@ -346,11 +349,7 @@ config X86_POPAD_OK
 
 config X86_ALIGNMENT_16
        def_bool y
-       depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCYRIXIII || X86_ELAN || MK6 || M586MMX || M586TSC || M586 || M486 || MVIAC3_2 || MGEODEGX1
-
-config X86_GOOD_APIC
-       def_bool y
-       depends on MK7 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || MK8 || MEFFICEON || MCORE2 || MVIAC7 || X86_64
+       depends on MWINCHIP3D || MWINCHIPC6 || MCYRIXIII || X86_ELAN || MK6 || M586MMX || M586TSC || M586 || M486 || MVIAC3_2 || MGEODEGX1
 
 config X86_INTEL_USERCOPY
        def_bool y
@@ -358,7 +357,7 @@ config X86_INTEL_USERCOPY
 
 config X86_USE_PPRO_CHECKSUM
        def_bool y
-       depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MK8 || MVIAC3_2 || MEFFICEON || MGEODE_LX || MCORE2
+       depends on MWINCHIP3D || MWINCHIPC6 || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MK8 || MVIAC3_2 || MEFFICEON || MGEODE_LX || MCORE2
 
 config X86_USE_3DNOW
        def_bool y
@@ -366,24 +365,166 @@ config X86_USE_3DNOW
 
 config X86_OOSTORE
        def_bool y
-       depends on (MWINCHIP3D || MWINCHIP2 || MWINCHIPC6) && MTRR
+       depends on (MWINCHIP3D || MWINCHIPC6) && MTRR
+
+#
+# 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 || MWINCHIP2 || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2 || MVIAC7 || MGEODEGX1 || MGEODE_LX || MCORE2) && !X86_NUMAQ) || X86_64
+       depends on ((MWINCHIP3D || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2 || MVIAC7 || MGEODEGX1 || MGEODE_LX || MCORE2) && !X86_NUMAQ) || X86_64
+
+config X86_CMPXCHG64
+       def_bool y
+       depends on X86_PAE || X86_64
 
 # this should be set for all -march=.. options where the compiler
 # generates cmov.
 config X86_CMOV
        def_bool y
-       depends on (MK7 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7)
+       depends on (MK8 || MK7 || MCORE2 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MCRUSOE || MEFFICEON || X86_64)
 
 config X86_MINIMUM_CPU_FAMILY
        int
        default "64" if X86_64
+       default "6" if X86_32 && X86_P6_NOP
        default "4" if X86_32 && (X86_XADD || X86_CMPXCHG || X86_BSWAP || X86_WP_WORKS_OK)
        default "3"
 
 config X86_DEBUGCTLMSR
        def_bool y
-       depends on !(M586MMX || M586TSC || M586 || M486 || M386)
+       depends on !(MK6 || MWINCHIPC6 || MWINCHIP3D || MCYRIXIII || M586MMX || M586TSC || M586 || M486 || M386) && !UML
+
+menuconfig PROCESSOR_SELECT
+       bool "Supported processor vendors" if EMBEDDED
+       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 !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_CENTAUR_32
+       default y
+       bool "Support Centaur processors" if PROCESSOR_SELECT
+       depends on !64BIT
+       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_CENTAUR_64
+       default y
+       bool "Support Centaur processors" if PROCESSOR_SELECT
+       depends on 64BIT
+       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 !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 X86_DS
+       def_bool X86_PTRACE_BTS
+       depends on X86_DEBUGCTLMSR
+       select HAVE_HW_BRANCH_TRACER
+
+config X86_PTRACE_BTS
+       bool "Branch Trace Store"
+       default y
+       depends on X86_DEBUGCTLMSR
+       help
+         This adds a ptrace interface to the hardware's branch trace store.
+
+         Debuggers may use it to collect an execution trace of the debugged
+         application in order to answer the question 'how did I get here?'.
+         Debuggers may trace user mode as well as kernel mode.
+
+         Say Y unless there is no application development on this machine
+         and you want to save a small amount of code size.