# Kconfig - XTENSA architecture configuration options
#
# Copyright (c) 2016 Cadence Design Systems, Inc.
# SPDX-License-Identifier: Apache-2.0

choice
	prompt "XTENSA core Selection"
	depends on XTENSA
	source "arch/xtensa/soc/*/Kconfig.soc"
endchoice

menu "XTENSA Options"
	depends on XTENSA

config ARCH
	default "xtensa"

config SIMULATOR_XTENSA
        bool
	prompt "Simulator Configuration"
	default n
	help
	  Specify if the board configuration should be treated as a simulator.

config SYS_CLOCK_HW_CYCLES_PER_SEC
	int
	prompt "Hardware clock cycles per second, 2000000 for ISS"
	default 2000000
	range 1000000 1000000000
	help
	This option specifies hardware clock.

config XTENSA_NO_IPC
	bool "Core has no IPC support"
	select ATOMIC_OPERATIONS_C
	default n
	help
	Uncheck this if you core does not implement "SCOMPARE1" register and "s32c1i"
	instruction.

config SW_ISR_TABLE
	bool
	prompt "Enable software interrupt handler table"
	default y
	help
	Enable an interrupt handler table implemented in software. This
	table, unlike ISRs connected directly in the vector table, allow
	a parameter to be passed to the interrupt handlers. Also, invoking
	the exception/interrupt exit stub is automatically done.

config IRQ_OFFLOAD
	bool "Enable IRQ offload"
	default n
	help
	Enable irq_offload() API which allows functions to be synchronously
	run in interrupt context. Uses one entry in the IDT.  Mainly useful
	for test cases.

config XTENSA_RESET_VECTOR
	bool
	prompt "Build reset vector code"
	default y
	help
	This option controls whether the initial reset vector code is built.
	This is always needed for the simulator. Real boards may already
	implement this in boot ROM.

config XTENSA_USE_CORE_CRT1
	bool
	prompt "Use crt1.S from core"
	default y
	help
	SoC or boards might define their own __start by setting this setting
	to false.

menu "Specific core configuration"

config IRQ_OFFLOAD_INTNUM
	int
	prompt "IRQ offload SW interrupt index"
	help
	 The index of the software interrupt to be used for IRQ offload.

	 Please note that in order for IRQ offload to work correctly the selected
	 interrupt shall have its priority shall not exceed XCHAL_EXCM_LEVEL.

config TOOLCHAIN_VARIANT
	string
	default RG-2016.4-linux

source "arch/xtensa/soc/*/Kconfig"

endmenu

endmenu
