if TARGET_MICROBLAZE_GENERIC

config SYS_BOARD
	default "microblaze-generic"

config SYS_VENDOR
	default "xilinx"

config SYS_CONFIG_NAME
	string "Board configuration name"
	default "microblaze-generic"
	help
	  This option contains information about board configuration name.
	  Based on this option include/configs/<CONFIG_SYS_CONFIG_NAME>.h header
	  will be used for board configuration.

config XILINX_MICROBLAZE0_USE_MSR_INSTR
	int "USE_MSR_INSTR range (0:1)"
	default 0

config XILINX_MICROBLAZE0_USE_PCMP_INSTR
	int "USE_PCMP_INSTR range (0:1)"
	default 0

config XILINX_MICROBLAZE0_USE_BARREL
	int "USE_BARREL range (0:1)"
	default 0

config XILINX_MICROBLAZE0_USE_DIV
	int "USE_DIV range (0:1)"
	default 0

config XILINX_MICROBLAZE0_USE_HW_MUL
	int "USE_HW_MUL values (0=NONE, 1=MUL32, 2=MUL64)"
	default 0

config XILINX_MICROBLAZE0_HW_VER
	string "Core version number"
	default "7.10.d"

config XILINX_MICROBLAZE0_USR_EXCEP
	bool "MicroBlaze user exception support"
	default y
	help
	  Enable this option in order to install the user exception handler
	  (_exception_handler routine from arch/microblaze/cpu/exception.c) in
	  the exception vector table. The user exception vector is located at
	  C_BASE_VECTORS + 0x8 address.

config XILINX_MICROBLAZE0_DELAY_SLOT_EXCEP
	bool "MicroBlaze delay slot exception support"
	default y
	help
	  Enable this option if the MicroBlaze processor supports exceptions
	  caused by delay slot instructions (processor version >= v5.00). When
	  enabled, the hw exception handler will print a message indicating
	  whether the exception was triggered by a delay slot instruction.

config XILINX_MICROBLAZE0_VECTOR_BASE_ADDR
	hex "Location of MicroBlaze vectors"
	default 0x0
	help
	  Memory address location of the exception vector table. It is
	  configurable via the C_BASE_VECTORS hdl parameter.

endif
