# arm cpu features
config BR2_ARM_CPU_HAS_NEON
	bool

# for some cores, NEON support is optional
config BR2_ARM_CPU_MAYBE_HAS_NEON
	bool

choice
	prompt "Target Architecture Variant"
	depends on BR2_arm || BR2_armeb
	default BR2_arm926t
	help
	  Specific CPU variant to use

config BR2_arm7tdmi
	bool "arm7tdmi"
config BR2_arm720t
	bool "arm720t"
config BR2_arm920t
	bool "arm920t"
config BR2_arm922t
	bool "arm922t"
config BR2_arm926t
	bool "arm926t"
config BR2_arm10t
	bool "arm10t"
config BR2_arm1136jf_s_r0
	bool "arm1136jf_s rev0"
config BR2_arm1136jf_s_r1
	bool "arm1136jf_s rev1"
config BR2_arm1176jz_s
	bool "arm1176jz-s"
config BR2_arm1176jzf_s
	bool "arm1176jzf-s"
config BR2_cortex_a5
	bool "cortex-A5"
	select BR2_ARM_CPU_MAYBE_HAS_NEON
config BR2_cortex_a8
	bool "cortex-A8"
	select BR2_ARM_CPU_HAS_NEON
config BR2_cortex_a9
	bool "cortex-A9"
	select BR2_ARM_CPU_MAYBE_HAS_NEON
config BR2_cortex_a15
	bool "cortex-A15"
	select BR2_ARM_CPU_HAS_NEON
config BR2_fa526
	bool "fa526/626"
config BR2_pj4
	bool "pj4"
config BR2_strongarm
	bool "strongarm sa110/sa1100"
config BR2_xscale
	bool "xscale"
config BR2_iwmmxt
	bool "iwmmxt"
endchoice

config BR2_arm1136jf_s
	bool
	default BR2_arm1136jf_s_r0 || BR2_arm1136jf_s_r1

choice
	prompt "Target ABI"
	depends on BR2_arm || BR2_armeb
	depends on BR2_DEPRECATED
	default BR2_ARM_EABI
	help
	  Application Binary Interface to use

	  Note:
	    Using OABI is discouraged.

config BR2_ARM_EABI_CHOICE
	bool "EABI"
config BR2_ARM_OABI
	bool "OABI"
	depends on !BR2_GCC_VERSION_4_7_X
endchoice

config BR2_ARM_EABI
	def_bool y
	depends on !BR2_ARM_OABI

config BR2_ARM_ENABLE_NEON
	bool "Enable NEON SIMD extension support"
	depends on BR2_ARM_CPU_MAYBE_HAS_NEON
	select BR2_ARM_CPU_HAS_NEON
	help
	  For some CPU cores, the NEON SIMD extension is optional.
	  Select this option if you are certain your particular
	  implementation has NEON support and you want to use it.

config BR2_ARCH
	default "arm"	if BR2_arm
	default "armeb"	if BR2_armeb

config BR2_ENDIAN
	default "LITTLE" if BR2_arm
	default "BIG"	 if BR2_armeb

config BR2_GCC_TARGET_TUNE
	default "arm7tdmi"	if BR2_arm7tdmi
	default "arm7tdmi"	if BR2_arm720t
	default "arm7tdmi"	if BR2_arm740t
	default "arm920"	if BR2_arm920
	default "arm920t"	if BR2_arm920t
	default "arm922t"	if BR2_arm922t
	default "arm926ej-s"	if BR2_arm926t
	default "arm1136j-s"	if BR2_arm1136j_s
	default "arm1136jf-s"	if BR2_arm1136jf_s
	default "arm1176jz-s"	if BR2_arm1176jz_s
	default "arm1176jzf-s"	if BR2_arm1176jzf_s
	default "cortex-a5"	if BR2_cortex_a5
	default "cortex-a8"	if BR2_cortex_a8
	default "cortex-a9"	if BR2_cortex_a9
	default "cortex-a15"	if BR2_cortex_a15
	default "fa526"		if BR2_fa526
	default "marvell-pj4"	if BR2_pj4
	default "strongarm"	if BR2_strongarm
	default "xscale"	if BR2_xscale
	default "iwmmxt"	if BR2_iwmmxt

config BR2_GCC_TARGET_ARCH
	default "armv4t"	if BR2_arm7tdmi
	default "armv4t"	if BR2_arm720t
	default "armv4t"	if BR2_arm920t
	default "armv4t"	if BR2_arm922t
	default "armv5te"	if BR2_arm926t
	default "armv5t"	if BR2_arm10t
	default "armv6j"	if BR2_arm1136jf_s_r0
	default "armv6k"	if BR2_arm1136jf_s_r1
	default "armv6zk"	if BR2_arm1176jz_s
	default "armv6zk"	if BR2_arm1176jzf_s
	default "armv7-a"	if BR2_cortex_a5
	default "armv7-a"	if BR2_cortex_a8
	default "armv7-a"	if BR2_cortex_a9
	default "armv7-a"	if BR2_cortex_a15
	default "armv4"		if BR2_fa526
	default "armv7-a"	if BR2_pj4
	default "armv4"		if BR2_strongarm
	default "armv5te"	if BR2_xscale
	default "iwmmxt"	if BR2_iwmmxt

config BR2_GCC_TARGET_ABI
	default "apcs-gnu"	if BR2_ARM_OABI
	default "aapcs-linux"	if BR2_ARM_EABI
