#
# For a description of the syntax of this configuration file,
# see misc/tools/kconfig-language.txt.
#

comment "ARMv7-A Configuration Options"

config ARMV7A_HAVE_L2CC
	bool
	default n
	---help---
		Selected by the configuration tool if the architecutre supports any
		kind of L2 cache.

config ARMV7A_HAVE_L2CC_PL310
	bool
	default n
	select ARMV7A_HAVE_L2CC
	---help---
		Set by architecture-specific code if the hardware supports a PL310
		r3p2 L2 cache (only version r3p2 is supported).

if ARMV7A_HAVE_L2CC

menu "L2 Cache Configuration"

config ARMV7A_L2CC_PL310
	bool "ARMv7-A L2CC P310 Support"
	default n
	depends on ARMV7A_HAVE_L2CC_PL310 && EXPERIMENTAL
	select ARCH_L2CACHE
	---help---
		Enable the 2 Cache Controller (L2CC) is based on the L2CC-PL310 ARM
		multi-way cache macrocell, version r3p2.  The addition of an on-chip
		secondary cache, also referred to as a Level 2 or L2 cache, is a
		method of improving the system performance when significant memory
		traffic is generated by the processor.

if ARCH_L2CACHE
if ARMV7A_L2CC_PL310

config PL310_LOCKDOWN_BY_MASTER
	bool "PL310 Lockdown by Master"
	default n

config PL310_LOCKDOWN_BY_LINE
	bool "PL310 Lockdown by Line"
	default n

config PL310_ADDRESS_FILTERING
	bool "PL310 Address Filtering by Line"
	default n

endif # ARMV7A_L2CC_PL310

choice
	prompt "L2 Cache Associativity"
	default ARMV7A_ASSOCIATIVITY_8WAY
	depends on ARCH_L2CACHE
	---help---
		This choice specifies the associativity of L2 cache in terms of the
		number of ways.  This value could be obtained by querying cache
		configuration registers.  However, by defining a configuration
		setting instead, we can avoid using RAM memory to hold information
		about properties of the memory.

config ARMV7A_ASSOCIATIVITY_8WAY
	bool "8-Way Associativity"

config ARMV7A_ASSOCIATIVITY_16WAY
	bool "16-Way Associativity"

endchoice # L2 Cache Associativity

choice
	prompt "L2 Cache Way Size"
	default ARMV7A_WAYSIZE_16KB
	depends on ARCH_L2CACHE
	---help---
		This choice specifies size of each way. This value can be obtained
		by querying cache configuration registers.  However, by defining a
		configuration setting instead, we can avoid using RAM memory to hold
		information

config ARMV7A_WAYSIZE_16KB
	bool "16 KiB"

config ARMV7A_WAYSIZE_32KB
	bool "32 KiB"

config ARMV7A_WAYSIZE_64KB
	bool "64 KiB"

config ARMV7A_WAYSIZE_128KB
	bool "128 KiB"

config ARMV7A_WAYSIZE_256KB
	bool "256 KiB"

config ARMV7A_WAYSIZE_512KB
	bool "512 KiB"

endchoice # L2 Cache Associativity
endif # ARCH_L2CACHE
endmenu # L2 Cache Configuration
endif # ARMV7A_HAVE_L2CC

choice
	prompt "Toolchain Selection"
	default ARMV7A_TOOLCHAIN_GNU_EABIW if HOST_WINDOWS
	default ARMV7A_TOOLCHAIN_GNU_EABIL if !HOST_WINDOWS

config ARMV7A_TOOLCHAIN_BUILDROOT
	bool "Buildroot (Cygwin or Linux)"
	depends on !WINDOWS_NATIVE

config ARMV7A_TOOLCHAIN_CODESOURCERYL
	bool "CodeSourcery GNU toolchain under Linux"
	depends on HOST_LINUX
	---help---
		For use with the GNU toolchain built with the NuttX buildroot package.
		This tools may be arm-nuttx-eabi- or, if ARMV7A_OABI_TOOLCHAIN is set,
		arm-nuttx-elf-.

config ARMV7A_TOOLCHAIN_CODESOURCERYW
	bool "CodeSourcery GNU toolchain under Windows"
	depends on HOST_WINDOWS

config ARMV7A_TOOLCHAIN_DEVKITARM
	bool "devkitARM GNU toolchain"
	depends on HOST_WINDOWS

config ARMV7A_TOOLCHAIN_GNU_EABIL
	bool "Generic GNU EABI toolchain under Linux (or other POSIX environment)"
	---help---
		This option should work for any modern GNU toolchain (GCC 4.5 or newer)
		configured for arm-none-eabi-.

config ARMV7A_TOOLCHAIN_GNU_EABIW
	bool "Generic GNU EABI toolchain under Windows"
	depends on HOST_WINDOWS
	---help---
		This option should work for any modern GNU toolchain (GCC 4.5 or newer)
		configured for arm-none-eabi-.

config ARMV7A_TOOLCHAIN_GNU_OABI
	bool "Generic GNU OABI toolchain"
	---help---
		This option should work for any GNU toolchain configured for arm-elf-.

endchoice # ARMV7A_HAVE_L2CC

config ARMV7A_OABI_TOOLCHAIN
	bool "OABI (vs EABI)"
	default n
	depends on ARMV7A_TOOLCHAIN_BUILDROOT
	---help---
		Most of the older buildroot toolchains are OABI and are named
		arm-nuttx-elf- vs. arm-nuttx-eabi-

config ARMV7A_DECODEFIQ
	bool "FIQ Handler"
	default n
	---help---
		Select this option if your platform supports the function
		arm_decodefiq().  This is used primarily to support secure TrustZone
		interrupts received on the FIQ vector.
