# For a description of the syntax of this configuration file,
# see Documentation/kbuild/kconfig-language.txt.

mainmenu "Linux/Microblaze Kernel Configuration"

config MICROBLAZE
	def_bool y
	select HAVE_LMB

config SWAP
	def_bool n

config RWSEM_GENERIC_SPINLOCK
	def_bool y

config RWSEM_XCHGADD_ALGORITHM
	bool

config ARCH_HAS_ILOG2_U32
	def_bool n

config ARCH_HAS_ILOG2_U64
	def_bool n

config GENERIC_FIND_NEXT_BIT
	def_bool y

config GENERIC_HWEIGHT
	def_bool y

config GENERIC_HARDIRQS
	def_bool y

config GENERIC_IRQ_PROBE
	def_bool y

config GENERIC_CALIBRATE_DELAY
	def_bool y

config GENERIC_TIME
	def_bool y

config GENERIC_TIME_VSYSCALL
	def_bool n

config GENERIC_CLOCKEVENTS
	def_bool y

config GENERIC_HARDIRQS_NO__DO_IRQ
	def_bool y

config PCI
	depends on !MMU
	def_bool n

config NO_DMA
	depends on !MMU
	def_bool n

source "init/Kconfig"

source "kernel/Kconfig.freezer"

source "arch/microblaze/platform/Kconfig.platform"

menu "Processor type and features"

source kernel/time/Kconfig

source "kernel/Kconfig.preempt"

source "kernel/Kconfig.hz"

config MMU
	def_bool n

config NO_MMU
	bool
	depends on !MMU
	default y

comment "Boot options"

config CMDLINE_BOOL
	bool "Default bootloader kernel arguments"

config CMDLINE
	string "Default kernel command string"
	depends on CMDLINE_BOOL
	default "console=ttyUL0,115200"
	help
	  On some architectures there is currently no way for the boot loader
	  to pass arguments to the kernel. For these architectures, you should
	  supply some command-line options at build time by entering them
	  here.

config CMDLINE_FORCE
	bool "Force default kernel command string"
	depends on CMDLINE_BOOL
	default n
	help
	  Set this to have arguments from the default kernel command string
	  override those passed by the boot loader.

config OF
	def_bool y

config OF_DEVICE
	def_bool y

config PROC_DEVICETREE
	bool "Support for device tree in /proc"
	depends on PROC_FS
	help
	  This option adds a device-tree directory under /proc which contains
	  an image of the device tree that the kernel copies from Open
	  Firmware or other boot firmware. If unsure, say Y here.

endmenu

source "mm/Kconfig"

menu "Exectuable file formats"

source "fs/Kconfig.binfmt"

endmenu

source "net/Kconfig"

source "drivers/Kconfig"

source "fs/Kconfig"

source "arch/microblaze/Kconfig.debug"

source "security/Kconfig"

source "crypto/Kconfig"

source "lib/Kconfig"
