# mips default CPU ISAs
config BR2_MIPS_CPU_MIPS32
	bool
	select BR2_MIPS_NAN_LEGACY
config BR2_MIPS_CPU_MIPS32R2
	bool
	select BR2_MIPS_NAN_LEGACY
config BR2_MIPS_CPU_MIPS32R3
	bool
	select BR2_MIPS_NAN_LEGACY
config BR2_MIPS_CPU_MIPS32R5
	bool
	select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
config BR2_MIPS_CPU_MIPS32R6
	bool
	select BR2_MIPS_NAN_2008
	select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
config BR2_MIPS_CPU_MIPS64
	bool
	select BR2_MIPS_NAN_LEGACY
config BR2_MIPS_CPU_MIPS64R2
	bool
	select BR2_MIPS_NAN_LEGACY
config BR2_MIPS_CPU_MIPS64R3
	bool
	select BR2_MIPS_NAN_LEGACY
config BR2_MIPS_CPU_MIPS64R5
	bool
	select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
config BR2_MIPS_CPU_MIPS64R6
	bool
	select BR2_MIPS_NAN_2008
	select BR2_ARCH_NEEDS_GCC_AT_LEAST_5

choice
	prompt "Target Architecture Variant"
	default BR2_mips_32 if BR2_mips || BR2_mipsel
	default BR2_mips_64 if BR2_mips64 || BR2_mips64el
	depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el
	help
	  Specific CPU variant to use

	  64bit capable: mips4, 64, 64r2, 64r3, 64r5, 64r6
	  non-64bit capable: mips4, 32, 32r2, 32r3, 32r5, 32r6

config BR2_mips_32
	bool "Generic MIPS32"
	depends on !BR2_ARCH_IS_64
	select BR2_MIPS_CPU_MIPS32
config BR2_mips_32r2
	bool "Generic MIPS32R2"
	depends on !BR2_ARCH_IS_64
	select BR2_MIPS_CPU_MIPS32R2
config BR2_mips_32r3
	bool "Generic MIPS32R3"
	depends on !BR2_ARCH_IS_64
	select BR2_MIPS_CPU_MIPS32R3
config BR2_mips_32r5
	bool "Generic MIPS32R5"
	depends on !BR2_ARCH_IS_64
	select BR2_MIPS_CPU_MIPS32R5
config BR2_mips_32r6
	bool "Generic MIPS32R6"
	depends on !BR2_ARCH_IS_64
	select BR2_MIPS_CPU_MIPS32R6
config BR2_mips_interaptiv
	bool "interAptiv"
	depends on !BR2_ARCH_IS_64
	select BR2_MIPS_CPU_MIPS32R2
	select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
config BR2_mips_m5150
	bool "M5150"
	depends on !BR2_ARCH_IS_64
	select BR2_MIPS_CPU_MIPS32R5
	select BR2_MIPS_NAN_2008
	select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
config BR2_mips_m6250
	bool "M6250"
	depends on !BR2_ARCH_IS_64
	select BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT
	select BR2_MIPS_CPU_MIPS32R6
config BR2_mips_p5600
	bool "P5600"
	depends on !BR2_ARCH_IS_64
	select BR2_MIPS_CPU_MIPS32R5
	select BR2_MIPS_NAN_2008
config BR2_mips_xburst
	bool "XBurst"
	depends on !BR2_ARCH_IS_64
	select BR2_MIPS_CPU_MIPS32R2
	help
	  The Ingenic XBurst is a MIPS32R2 microprocessor. It has a
	  bug in the FPU that can generate incorrect results in
	  certain cases. The problem shows up when you have several
	  fused madd instructions in sequence with dependant
	  operands. This requires the -mno-fused-madd compiler option
	  to be used in order to prevent emitting these instructions.

	  See http://www.ingenic.com/en/?xburst.html
config BR2_mips4
	bool "MIPS IV"
config BR2_mips_64
	bool "Generic MIPS64"
	depends on BR2_ARCH_IS_64
	select BR2_MIPS_CPU_MIPS64
config BR2_mips_64r2
	bool "Generic MIPS64R2"
	depends on BR2_ARCH_IS_64
	select BR2_MIPS_CPU_MIPS64R2
config BR2_mips_64r3
	bool "Generic MIPS64R3"
	depends on BR2_ARCH_IS_64
	select BR2_MIPS_CPU_MIPS64R3
config BR2_mips_64r5
	bool "Generic MIPS64R5"
	depends on BR2_ARCH_IS_64
	select BR2_MIPS_CPU_MIPS64R5
config BR2_mips_64r6
	bool "Generic MIPS64R6"
	depends on BR2_ARCH_IS_64
	select BR2_MIPS_CPU_MIPS64R6
config BR2_mips_i6400
	bool "I6400"
	depends on BR2_ARCH_IS_64
	select BR2_MIPS_CPU_MIPS64R6
	select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
config BR2_mips_octeon2
	bool "Octeon II"
	depends on BR2_ARCH_IS_64
	select BR2_MIPS_CPU_MIPS64R2
	help
	  Marvell (formerly Cavium Networks) Octeon II CN60XX
	  processors.
config BR2_mips_octeon3
	bool "Octeon III"
	depends on BR2_ARCH_IS_64
	select BR2_MIPS_CPU_MIPS64R3
	help
	  Marvell (formerly Cavium Networks) Octeon III CN7XXX
	  processors.
config BR2_mips_p6600
	bool "P6600"
	depends on BR2_ARCH_IS_64
	select BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT
	select BR2_MIPS_CPU_MIPS64R6
endchoice

choice
	prompt "Target ABI"
	default BR2_MIPS_NABI32
	depends on BR2_mips64 || BR2_mips64el

	help
	  Application Binary Interface to use

config BR2_MIPS_NABI32
	bool "n32"
	depends on BR2_ARCH_IS_64
	select BR2_KERNEL_64_USERLAND_32
config BR2_MIPS_NABI64
	bool "n64"
	depends on BR2_ARCH_IS_64
endchoice

config BR2_MIPS_SOFT_FLOAT
	bool "Use soft-float"
	default y
	depends on !BR2_mips_octeon3 # hard-float only
	select BR2_SOFT_FLOAT
	help
	  If your target CPU does not have a Floating Point Unit (FPU)
	  or a kernel FPU emulator, but you still wish to support
	  floating point functions, then everything will need to be
	  compiled with soft floating point support (-msoft-float).

choice
	prompt "FP mode"
	default BR2_MIPS_FP32_MODE_XX
	depends on !BR2_ARCH_IS_64 && !BR2_MIPS_SOFT_FLOAT
	help
	  MIPS32 supports different FP modes (32,xx,64). Information
	  about FP modes can be found here:
	  https://sourceware.org/binutils/docs/as/MIPS-Options.html
	  https://dmz-portal.imgtec.com/wiki/MIPS_O32_ABI_-_FR0_and_FR1_Interlinking#5._Generating_modeless_code

config BR2_MIPS_FP32_MODE_32
	bool "32"
	depends on !BR2_MIPS_CPU_MIPS32R6

config BR2_MIPS_FP32_MODE_XX
	bool "xx"
	select BR2_ARCH_NEEDS_GCC_AT_LEAST_5

config BR2_MIPS_FP32_MODE_64
	bool "64"
	depends on !BR2_MIPS_CPU_MIPS32
endchoice

config BR2_GCC_TARGET_FP32_MODE
	default "32"	if BR2_MIPS_FP32_MODE_32
	default "xx"	if BR2_MIPS_FP32_MODE_XX
	default "64"	if BR2_MIPS_FP32_MODE_64

config BR2_MIPS_NAN_LEGACY
	bool

config BR2_MIPS_NAN_2008
	bool
	select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9

choice
	prompt "Target NaN"
	default BR2_MIPS_ENABLE_NAN_2008
	depends on BR2_mips_32r5 || BR2_mips_64r5
	help
	  MIPS supports two different NaN encodings, legacy and 2008.
	  Information about MIPS NaN encodings can be found here:
	  https://sourceware.org/binutils/docs/as/MIPS-NaN-Encodings.html

config BR2_MIPS_ENABLE_NAN_LEGACY
	bool "legacy"
	select BR2_MIPS_NAN_LEGACY

config BR2_MIPS_ENABLE_NAN_2008
	bool "2008"
	depends on !BR2_MIPS_SOFT_FLOAT
	select BR2_MIPS_NAN_2008
endchoice

config BR2_GCC_TARGET_NAN
	default "legacy"	if BR2_MIPS_NAN_LEGACY
	default "2008"		if BR2_MIPS_NAN_2008

config BR2_ARCH
	default "mips"		if BR2_mips
	default "mipsel"	if BR2_mipsel
	default "mips64"	if BR2_mips64
	default "mips64el"	if BR2_mips64el

config BR2_NORMALIZED_ARCH
	default "mips"

config BR2_ENDIAN
	default "LITTLE"	if BR2_mipsel || BR2_mips64el
	default "BIG"		if BR2_mips || BR2_mips64

config BR2_GCC_TARGET_ARCH
	default "mips32"	if BR2_mips_32
	default "mips32r2"	if BR2_mips_32r2
	default "mips32r3"	if BR2_mips_32r3
	default "mips32r5"	if BR2_mips_32r5
	default "mips32r6"	if BR2_mips_32r6
	default "interaptiv"	if BR2_mips_interaptiv
	default "m5101"		if BR2_mips_m5150
	default "m6201"		if BR2_mips_m6250
	default "p5600"		if BR2_mips_p5600
	default "mips32r2"	if BR2_mips_xburst
	default "mips64"	if BR2_mips_64
	default "mips64r2"	if BR2_mips_64r2
	default "mips64r3"	if BR2_mips_64r3
	default "mips64r5"	if BR2_mips_64r5
	default "mips64r6"	if BR2_mips_64r6
	default "i6400"		if BR2_mips_i6400
	default "octeon2"	if BR2_mips_octeon2
	default "octeon3"	if BR2_mips_octeon3
	default "p6600"		if BR2_mips_p6600
	default "mips4"		if BR2_mips4

config BR2_MIPS_OABI32
	bool
	default y		if BR2_mips || BR2_mipsel

config BR2_GCC_TARGET_ABI
	default "32"		if BR2_MIPS_OABI32
	default "n32"		if BR2_MIPS_NABI32
	default "64"		if BR2_MIPS_NABI64

config BR2_READELF_ARCH_NAME
	default "MIPS R3000"

# vim: ft=kconfig
# -*- mode:kconfig; -*-
