config PARISC
	def_bool y
	select HAVE_IDE
	select HAVE_OPROFILE
	select HAVE_FUNCTION_TRACER if 64BIT
	select HAVE_FUNCTION_GRAPH_TRACER if 64BIT
	select HAVE_FUNCTION_TRACE_MCOUNT_TEST if 64BIT
	select RTC_CLASS
	select RTC_DRV_GENERIC
	select INIT_ALL_POSSIBLE
	select BUG
	select HAVE_PERF_EVENTS
	select GENERIC_ATOMIC64 if !64BIT
	select HAVE_GENERIC_HARDIRQS
	select BROKEN_RODATA
	select GENERIC_IRQ_PROBE
	select GENERIC_PCI_IOMAP
	select ARCH_HAVE_NMI_SAFE_CMPXCHG
	select GENERIC_SMP_IDLE_THREAD
	select GENERIC_STRNCPY_FROM_USER
	select HAVE_MOD_ARCH_SPECIFIC
	select MODULES_USE_ELF_RELA
	select CLONE_BACKWARDS
	select TTY # Needed for pdc_cons.c

	help
	  The PA-RISC microprocessor is designed by Hewlett-Packard and used
	  in many of their workstations & servers (HP9000 700 and 800 series,
	  and later HP3000 series).  The PA-RISC Linux project home page is
	  at <http://www.parisc-linux.org/>.

config MMU
	def_bool y

config STACK_GROWSUP
	def_bool y

config GENERIC_LOCKBREAK
	bool
	default y
	depends on SMP && PREEMPT

config RWSEM_GENERIC_SPINLOCK
	def_bool y

config RWSEM_XCHGADD_ALGORITHM
	bool

config ARCH_HAS_ILOG2_U32
	bool
	default n

config ARCH_HAS_ILOG2_U64
	bool
	default n

config GENERIC_BUG
	bool
	default y
	depends on BUG

config GENERIC_HWEIGHT
	bool
	default y

config GENERIC_CALIBRATE_DELAY
	bool
	default y

config TIME_LOW_RES
	bool
	depends on SMP
	default y

config HAVE_LATENCYTOP_SUPPORT
        def_bool y

# unless you want to implement ACPI on PA-RISC ... ;-)
config PM
	bool

config STACKTRACE_SUPPORT
	def_bool y

config NEED_DMA_MAP_STATE
	def_bool y

config NEED_SG_DMA_LENGTH
	def_bool y

config ISA_DMA_API
	bool

config ARCH_MAY_HAVE_PC_FDC
	bool
	depends on BROKEN
	default y

source "init/Kconfig"

source "kernel/Kconfig.freezer"


menu "Processor type and features"

choice
	prompt "Processor type"
	default PA7000

config PA7000
	bool "PA7000/PA7100"
	---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 32-bit PA CPUs (albeit not optimally fast),
	  you can specify "PA7000" here.

	  Specifying "PA8000" here will allow you to select a 64-bit kernel
	  which is required on some machines.

config PA7100LC
	bool "PA7100LC"
	help
	  Select this option for the PCX-L processor, as used in the
	  712, 715/64, 715/80, 715/100, 715/100XC, 725/100, 743, 748,
	  D200, D210, D300, D310 and E-class

config PA7200
	bool "PA7200"
	help
	  Select this option for the PCX-T' processor, as used in the
	  C100, C110, J100, J110, J210XC, D250, D260, D350, D360,
	  K100, K200, K210, K220, K400, K410 and K420

config PA7300LC
	bool "PA7300LC"
	help
	  Select this option for the PCX-L2 processor, as used in the
	  744, A180, B132L, B160L, B180L, C132L, C160L, C180L,
	  D220, D230, D320 and D330.

config PA8X00
	bool "PA8000 and up"
	help
	  Select this option for PCX-U to PCX-W2 processors.

endchoice

# Define implied options from the CPU selection here

config PA20
	def_bool y
	depends on PA8X00

config PA11
	def_bool y
	depends on PA7000 || PA7100LC || PA7200 || PA7300LC

config PREFETCH
	def_bool y
	depends on PA8X00 || PA7200

config MLONGCALLS
	bool "Enable the -mlong-calls compiler option for big kernels"
	def_bool y if (!MODULES)
	depends on PA8X00
	help
	  If you configure the kernel to include many drivers built-in instead
	  as modules, the kernel executable may become too big, so that the
	  linker will not be able to resolve some long branches and fails to link
	  your vmlinux kernel. In that case enabling this option will help you
	  to overcome this limit by using the -mlong-calls compiler option.

	  Usually you want to say N here, unless you e.g. want to build
	  a kernel which includes all necessary drivers built-in and which can
	  be used for TFTP booting without the need to have an initrd ramdisk.

	  Enabling this option will probably slow down your kernel.

config 64BIT
	bool "64-bit kernel"
	depends on PA8X00
	help
	  Enable this if you want to support 64bit kernel on PA-RISC platform.

	  At the moment, only people willing to use more than 2GB of RAM,
	  or having a 64bit-only capable PA-RISC machine should say Y here.

	  Since there is no 64bit userland on PA-RISC, there is no point to
	  enable this option otherwise. The 64bit kernel is significantly bigger
	  and slower than the 32bit one.

choice
	prompt "Kernel page size"
	default PARISC_PAGE_SIZE_4KB

config PARISC_PAGE_SIZE_4KB
	bool "4KB"
	help
	  This lets you select the page size of the kernel.  For best
	  performance, a page size of 16KB is recommended.  For best
	  compatibility with 32bit applications, a page size of 4KB should be
	  selected (the vast majority of 32bit binaries work perfectly fine
	  with a larger page size).

	  4KB                For best 32bit compatibility
	  16KB               For best performance
	  64KB               For best performance, might give more overhead.

	  If you don't know what to do, choose 4KB.

config PARISC_PAGE_SIZE_16KB
	bool "16KB"
	depends on PA8X00

config PARISC_PAGE_SIZE_64KB
	bool "64KB"
	depends on PA8X00

endchoice

config SMP
	bool "Symmetric multi-processing support"
	select USE_GENERIC_SMP_HELPERS
	---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.

	  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/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 HOTPLUG_CPU
	bool
	default y if SMP
	select HOTPLUG

config ARCH_SELECT_MEMORY_MODEL
	def_bool y
	depends on 64BIT

config ARCH_DISCONTIGMEM_ENABLE
	def_bool y
	depends on 64BIT

config ARCH_FLATMEM_ENABLE
	def_bool y

config ARCH_DISCONTIGMEM_DEFAULT
	def_bool y
	depends on ARCH_DISCONTIGMEM_ENABLE

config NODES_SHIFT
	int
	default "3"
	depends on NEED_MULTIPLE_NODES

source "kernel/Kconfig.preempt"
source "kernel/Kconfig.hz"
source "mm/Kconfig"

config COMPAT
	def_bool y
	depends on 64BIT

config SYSVIPC_COMPAT
	def_bool y
	depends on COMPAT && SYSVIPC

config HPUX
	bool "Support for HP-UX binaries"
	depends on !64BIT

config NR_CPUS
	int "Maximum number of CPUs (2-32)"
	range 2 32
	depends on SMP
	default "32"

endmenu


source "drivers/parisc/Kconfig"


menu "Executable file formats"

source "fs/Kconfig.binfmt"

endmenu

source "net/Kconfig"

source "drivers/Kconfig"

source "fs/Kconfig"

source "arch/parisc/Kconfig.debug"

source "security/Kconfig"

source "crypto/Kconfig"

source "lib/Kconfig"
