# For a description of the syntax of this configuration file,
# see Documentation/kbuild/kconfig-language.txt.
#
# Platform selection Kconfig menu for MicroBlaze targets
#

menu "Platform options"
choice
	prompt "Platform"
	default PLATFORM_MICROBLAZE_AUTO
	help
	  Choose which hardware board/platform you are targeting.

config PLATFORM_GENERIC
	bool "Generic"
	help
	  Choose this option for the Generic platform.

endchoice

config SELFMOD
	bool "Use self modified code for intc/timer"
	depends on EXPERIMENTAL && NO_MMU
	default n
	help
	  This choice enables self-modified code for interrupt controller
	  and timer.

config SELFMOD_INTC
	bool "Use self modified code for intc"
	depends on SELFMOD
	default y
	help
	  This choice enables self-modified code for interrupt controller.

config SELFMOD_TIMER
	bool "Use self modified code for timer"
	depends on SELFMOD
	default y
	help
	  This choice enables self-modified code for timer.

config OPT_LIB_FUNCTION
	bool "Optimalized lib function"
	default y
	help
	  Allows turn on optimalized library function (memcpy and memmove).
	  They are optimized by using word alignment. This will work
	  fine if both source and destination are aligned on the same
	  boundary. However, if they are aligned on different boundaries
	  shifts will be necessary. This might result in bad performance
	  on MicroBlaze systems without a barrel shifter.

config OPT_LIB_ASM
	bool "Optimalized lib function ASM"
	depends on OPT_LIB_FUNCTION
	default n
	help
	  Allows turn on optimalized library function (memcpy and memmove).
	  Function are written in asm code.

# This is still a bit broken - disabling for now JW 20070504
config ALLOW_EDIT_AUTO
	bool "Permit Display/edit of Kconfig.auto platform settings"
	default n
	help
	  Allows the editing of auto-generated platform settings from
	  the Kconfig.auto file. Obviously this does not change the
	  underlying hardware, so be very careful if you go editing
	  these settings.

	  Also, if you enable this, and edit various Kconfig.auto
	  settings, YOUR CHANGES WILL BE LOST if you then disable it
	  again. You have been warned!

	  If unsure, say no.

comment "Automatic platform settings from Kconfig.auto"
	depends on ALLOW_EDIT_AUTO

if PLATFORM_GENERIC=y
	source "arch/microblaze/platform/generic/Kconfig.auto"
endif

endmenu
