kernel: remove CONFIG_USE_GENERIC_SMP_HELPERS
[linux-3.10.git] / arch / mn10300 / Kconfig
index 444b9f9..75d5b77 100644 (file)
@@ -1,17 +1,32 @@
-#
-# For a description of the syntax of this configuration file,
-# see Documentation/kbuild/kconfig-language.txt.
-#
-
-mainmenu "Linux Kernel Configuration"
-
 config MN10300
        def_bool y
        select HAVE_OPROFILE
+       select HAVE_GENERIC_HARDIRQS
+       select GENERIC_IRQ_SHOW
+       select ARCH_WANT_IPC_PARSE_VERSION
        select HAVE_ARCH_TRACEHOOK
+       select HAVE_ARCH_KGDB
+       select GENERIC_ATOMIC64
+       select HAVE_NMI_WATCHDOG if MN10300_WD_TIMER
+       select VIRT_TO_BUS
+       select GENERIC_CLOCKEVENTS
+       select MODULES_USE_ELF_RELA
+       select OLD_SIGSUSPEND3
+       select OLD_SIGACTION
+
+config AM33_2
+       def_bool n
 
-config AM33
-       def_bool y
+config AM33_3
+       def_bool n
+
+config AM34_2
+       def_bool n
+       select MN10300_HAS_ATOMIC_OPS_UNIT
+       select MN10300_HAS_CACHE_SNOOP
+
+config ERRATUM_NEED_TO_RELOAD_MMUCTR
+       def_bool y if AM33_3 || AM34_2
 
 config MMU
        def_bool y
@@ -31,18 +46,9 @@ config RWSEM_GENERIC_SPINLOCK
 config RWSEM_XCHGADD_ALGORITHM
        bool
 
-config GENERIC_HARDIRQS_NO__DO_IRQ
-       def_bool y
-
 config GENERIC_CALIBRATE_DELAY
        def_bool y
 
-config GENERIC_CMOS_UPDATE
-        def_bool y
-
-config GENERIC_FIND_NEXT_BIT
-       def_bool y
-
 config GENERIC_HWEIGHT
        def_bool y
 
@@ -55,25 +61,15 @@ config QUICKLIST
 config ARCH_HAS_ILOG2_U32
        def_bool y
 
-# Use the generic interrupt handling code in kernel/irq/
-config GENERIC_HARDIRQS
-       def_bool y
-
 config HOTPLUG_CPU
        def_bool n
 
-config HZ
-       int
-       default 1000
-
-mainmenu "Matsushita MN10300/AM33 Kernel Configuration"
-
 source "init/Kconfig"
 
 source "kernel/Kconfig.freezer"
 
 
-menu "Matsushita MN10300 system setup"
+menu "Panasonic MN10300 system setup"
 
 choice
        prompt "Unit type"
@@ -88,6 +84,10 @@ config MN10300_UNIT_ASB2303
 config MN10300_UNIT_ASB2305
        bool "ASB2305"
 
+config MN10300_UNIT_ASB2364
+       bool "ASB2364"
+       select SMSC911X_ARCH_HOOKS if SMSC911X
+
 endchoice
 
 choice
@@ -100,57 +100,51 @@ choice
 config MN10300_PROC_MN103E010
        bool "MN103E010"
        depends on MN10300_UNIT_ASB2303 || MN10300_UNIT_ASB2305
+       select AM33_2
+       select MN10300_PROC_HAS_TTYSM0
+       select MN10300_PROC_HAS_TTYSM1
+       select MN10300_PROC_HAS_TTYSM2
+
+config MN10300_PROC_MN2WS0050
+       bool "MN2WS0050"
+       depends on MN10300_UNIT_ASB2364
+       select AM34_2
        select MN10300_PROC_HAS_TTYSM0
        select MN10300_PROC_HAS_TTYSM1
        select MN10300_PROC_HAS_TTYSM2
 
 endchoice
 
-choice
-       prompt "Processor core support"
-       default MN10300_CPU_AM33V2
+config MN10300_HAS_ATOMIC_OPS_UNIT
+       def_bool n
        help
-         This option specifies the processor core for which the kernel will be
-         compiled. It affects the instruction set used.
-
-config MN10300_CPU_AM33V2
-       bool "AM33v2"
-
-endchoice
+         This should be enabled if the processor has an atomic ops unit
+         capable of doing LL/SC equivalent operations.
 
 config FPU
        bool "FPU present"
        default y
-       depends on MN10300_PROC_MN103E010
+       depends on MN10300_PROC_MN103E010 || MN10300_PROC_MN2WS0050
 
-choice
-       prompt "CPU Caching mode"
-       default MN10300_CACHE_WBACK
+config LAZY_SAVE_FPU
+       bool "Save FPU state lazily"
+       default y
+       depends on FPU && !SMP
        help
-         This option determines the caching mode for the kernel.
-
-         Write-Back caching mode involves the all reads and writes causing
-         the affected cacheline to be read into the cache first before being
-         operated upon. Memory is not then updated by a write until the cache
-         is filled and a cacheline needs to be displaced from the cache to
-         make room. Only at that point is it written back.
+         Enable this to be lazy in the saving of the FPU state to the owning
+         task's thread struct.  This is useful if most tasks on the system
+         don't use the FPU as only those tasks that use it will pass it
+         between them, and the state needn't be saved for a task that isn't
+         using it.
 
-         Write-Through caching only fetches cachelines from memory on a
-         read. Writes always get written directly to memory. If the affected
-         cacheline is also in cache, it will be updated too.
+         This can't be so easily used on SMP as the process that owns the FPU
+         state on a CPU may be currently running on another CPU, so for the
+         moment, it is disabled.
 
-         The final option is to turn of caching entirely.
+source "arch/mn10300/mm/Kconfig.cache"
 
-config MN10300_CACHE_WBACK
-       bool "Write-Back"
-
-config MN10300_CACHE_WTHRU
-       bool "Write-Through"
-
-config MN10300_CACHE_DISABLED
-       bool "Disabled"
-
-endchoice
+config MN10300_TLB_USE_PIDR
+       def_bool y
 
 menu "Memory layout options"
 
@@ -171,24 +165,50 @@ config KERNEL_TEXT_ADDRESS
 
 config KERNEL_ZIMAGE_BASE_ADDRESS
        hex "Base address of compressed vmlinux image"
-       default "0x90700000"
+       default "0x50700000"
+
+config BOOT_STACK_OFFSET
+       hex
+       default "0xF00" if SMP
+       default "0xFF0" if !SMP
 
+config BOOT_STACK_SIZE
+       hex
+       depends on SMP
+       default "0x100"
 endmenu
 
-config PREEMPT
-       bool "Preemptible Kernel"
-       help
-         This option reduces the latency of the kernel when reacting to
-         real-time or interactive events by allowing a low priority process to
-         be preempted even if it is in kernel mode executing a system call.
-         This allows applications to run more reliably even when the system is
-         under load.
+config SMP
+       bool "Symmetric multi-processing support"
+       default y
+       depends on MN10300_PROC_MN2WS0038 || MN10300_PROC_MN2WS0050
+       ---help---
+         This enables support for systems with more than one CPU. If you have
+         a system with only one CPU, like most personal computers, say N. If
+         you have a system with more than one CPU, say Y.
 
-         Say Y here if you are building a kernel for a desktop, embedded
-         or real-time system.  Say N if you are unsure.
+         If you say N here, the kernel will run on single and multiprocessor
+         machines, but will use only one CPU of a multiprocessor machine. If
+         you say Y here, the kernel will run on many, but not all,
+         singleprocessor machines. On a singleprocessor machine, the kernel
+         will run faster if you say N here.
+
+         See also <file:Documentation/x86/i386/IO-APIC.txt>,
+         <file:Documentation/nmi_watchdog.txt> and the SMP-HOWTO available at
+         <http://www.tldp.org/docs.html#howto>.
+
+         If you don't know what to do here, say N.
+
+config NR_CPUS
+       int
+       depends on SMP
+       default "2"
+
+source "kernel/Kconfig.preempt"
 
 config MN10300_CURRENT_IN_E2
        bool "Hold current task address in E2 register"
+       depends on !SMP
        default y
        help
          This option removes the E2/R2 register from the set available to gcc
@@ -210,12 +230,14 @@ config MN10300_USING_JTAG
          suppresses the use of certain hardware debugging features, such as
          single-stepping, which are taken over completely by the JTAG unit.
 
+source "kernel/Kconfig.hz"
+
 config MN10300_RTC
        bool "Using MN10300 RTC"
-       depends on MN10300_PROC_MN103E010
+       depends on MN10300_PROC_MN103E010 || MN10300_PROC_MN2WS0050
+       select GENERIC_CMOS_UPDATE
        default n
        help
-
          This option enables support for the RTC, thus enabling time to be
          tracked, even when system is powered down. This is available on-chip
          on the MN103E010.
@@ -230,6 +252,7 @@ config PCI
        bool "Use PCI"
        depends on MN10300_UNIT_ASB2305
        default y
+       select GENERIC_PCI_IOMAP
        help
          Some systems (such as the ASB2305) have PCI onboard. If you have one
          of these boards and you wish to use the PCI facilities, say Y here.
@@ -307,14 +330,23 @@ config MN10300_TTYSM1
 
 choice
        prompt "Select the timer to supply the clock for SIF1"
-       default MN10300_TTYSM0_TIMER9
+       default MN10300_TTYSM1_TIMER12 \
+               if !(AM33_2 || AM33_3)
+       default MN10300_TTYSM1_TIMER9 \
+               if AM33_2 || AM33_3
        depends on MN10300_TTYSM1
 
+config MN10300_TTYSM1_TIMER12
+       bool "Use timer 12 (16-bit)"
+       depends on !(AM33_2 || AM33_3)
+
 config MN10300_TTYSM1_TIMER9
        bool "Use timer 9 (16-bit)"
+       depends on AM33_2 || AM33_3
 
 config MN10300_TTYSM1_TIMER3
        bool "Use timer 3 (8-bit)"
+       depends on AM33_2 || AM33_3
 
 endchoice
 
@@ -329,17 +361,107 @@ config MN10300_TTYSM2
 
 choice
        prompt "Select the timer to supply the clock for SIF2"
-       default MN10300_TTYSM0_TIMER10
+       default MN10300_TTYSM2_TIMER3 \
+               if !(AM33_2 || AM33_3)
+       default MN10300_TTYSM2_TIMER10 \
+               if AM33_2 || AM33_3
        depends on MN10300_TTYSM2
 
+config MN10300_TTYSM2_TIMER9
+       bool "Use timer 9 (16-bit)"
+       depends on !(AM33_2 || AM33_3)
+
+config MN10300_TTYSM2_TIMER1
+       bool "Use timer 1 (8-bit)"
+       depends on !(AM33_2 || AM33_3)
+
+config MN10300_TTYSM2_TIMER3
+       bool "Use timer 3 (8-bit)"
+       depends on !(AM33_2 || AM33_3)
+
 config MN10300_TTYSM2_TIMER10
        bool "Use timer 10 (16-bit)"
+       depends on AM33_2 || AM33_3
 
 endchoice
 
 config MN10300_TTYSM2_CTS
        bool "Enable the use of the CTS line /dev/ttySM2"
-       depends on MN10300_TTYSM2
+       depends on MN10300_TTYSM2 && AM33_2
+
+endmenu
+
+menu "Interrupt request priority options"
+
+comment "[!] NOTE: A lower number/level indicates a higher priority (0 is highest, 6 is lowest)"
+
+comment "____Non-maskable interrupt levels____"
+comment "The following must be set to a higher priority than local_irq_disable() and on-chip serial"
+
+config DEBUGGER_IRQ_LEVEL
+       int "DEBUGGER interrupt priority"
+       depends on KERNEL_DEBUGGER
+       range 0 1 if LINUX_CLI_LEVEL = 2
+       range 0 2 if LINUX_CLI_LEVEL = 3
+       range 0 3 if LINUX_CLI_LEVEL = 4
+       range 0 4 if LINUX_CLI_LEVEL = 5
+       range 0 5 if LINUX_CLI_LEVEL = 6
+       default 0
+
+comment "The following must be set to a higher priority than local_irq_disable()"
+
+config MN10300_SERIAL_IRQ_LEVEL
+       int "MN10300 on-chip serial interrupt priority"
+       depends on MN10300_TTYSM
+       range 1 1 if LINUX_CLI_LEVEL = 2
+       range 1 2 if LINUX_CLI_LEVEL = 3
+       range 1 3 if LINUX_CLI_LEVEL = 4
+       range 1 4 if LINUX_CLI_LEVEL = 5
+       range 1 5 if LINUX_CLI_LEVEL = 6
+       default 1
+
+comment "-"
+comment "____Maskable interrupt levels____"
+
+config LINUX_CLI_LEVEL
+       int "The highest interrupt priority excluded by local_irq_disable() (2-6)"
+       range 2 6
+       default 2
+       help
+         local_irq_disable() doesn't actually disable maskable interrupts -
+         what it does is restrict the levels of interrupt which are permitted
+         (a lower level indicates a higher priority) by lowering the value in
+         EPSW.IM from 7.  Any interrupt is permitted for which the level is
+         lower than EPSW.IM.
+
+         Certain interrupts, such as DEBUGGER and virtual MN10300 on-chip
+         serial DMA interrupts are allowed to interrupt normal disabled
+         sections.
+
+comment "The following must be set to a equal to or lower priority than LINUX_CLI_LEVEL"
+
+config TIMER_IRQ_LEVEL
+       int "Kernel timer interrupt priority"
+       range LINUX_CLI_LEVEL 6
+       default 4
+
+config PCI_IRQ_LEVEL
+       int "PCI interrupt priority"
+       depends on PCI
+       range LINUX_CLI_LEVEL 6
+       default 5
+
+config ETHERNET_IRQ_LEVEL
+       int "Ethernet interrupt priority"
+       depends on SMC91X || SMC911X || SMSC911X
+       range LINUX_CLI_LEVEL 6
+       default 6
+
+config EXT_SERIAL_IRQ_LEVEL
+       int "External serial port interrupt priority"
+       depends on SERIAL_8250
+       range LINUX_CLI_LEVEL 6
+       default 6
 
 endmenu