#
# 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
	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 IRQ_OFFLOAD
	bool "Enable IRQ offload"
	default n
	help
	Enable irq_offload() API which allows functions to be synchronously
	run in interrupt context. Mainly useful for test cases.

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
