#
# Copyright (c) 2016 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
#

choice
	prompt "Nios II configuration selection"
	depends on NIOS2
	source "arch/nios2/soc/*/Kconfig.soc"
endchoice

menu "Nios II Options"
	depends on NIOS2

config ARCH
	string
	default "nios2"

config ARCH_DEFCONFIG
	string
	default "arch/nios2/defconfig"

menu "Nios II Gen 2 Processor Options"

config CPU_NIOS2_GEN2
	bool
	default y
	select BUILD_OUTPUT_HEX
	help
	  This option signifies the use of a Nios II Gen 2 CPU

endmenu

menu "Nios II Family Options"

config XIP
	bool
	default y

config GEN_ISR_TABLES
	default y

config GEN_IRQ_VECTOR_TABLE
	default n

config NUM_IRQS
	int
	default 32

config HAS_MUL_INSTRUCTION
	bool
	default n

config HAS_DIV_INSTRUCTION
	bool
	default n

config HAS_MULX_INSTRUCTION
	bool
	default n

config INCLUDE_RESET_VECTOR
	bool "Include Reset vector"
	default y
	help
	  Include the reset vector stub, which enables instruction/data caches
	  and then jumps to __start. This code is typically located at the very
	  beginning of flash memory. You may need to omit this if using the
	  nios2-download tool since it refuses to load data anywhere other than
	  RAM.

config EXTRA_EXCEPTION_INFO
	bool "Extra exception debug information"
	default n
	help
	  Have exceptions print additional useful debugging information in
	  human-readable form, at the expense of code size. For example,
	  the cause code for an exception will be supplemented by a string
	  describing what that cause code means.

choice
prompt "Global Pointer options"
default GP_GLOBAL

config GP_NONE
	bool "No global pointer"
	help
	  Do not use global pointer relative offsets at all

config GP_LOCAL
	bool "Local data global pointer references"
	help
	  Use global pointer relative offsets for small globals declared in the
	  same C file as the code that uses it.

config GP_GLOBAL
	bool "Global data global pointer references"
	help
	  Use global pointer relative offsets for small globals declared
	  anywhere in the executable. Note that if any small globals that are put
	  in alternate sections (such as _k_task_list_ptr) they must be declared
	  in headers with proper __attribute__((section)) or the linker will
	  error out.

config GP_ALL_DATA
	bool "All data global pointer references"
	help
	  Use GP relative access for all data in the program, not just
	  small data. Use this if your board has 64K or less of RAM.

endchoice

endmenu

source "arch/nios2/soc/*/Kconfig"

endmenu
