dd8a410eaf
The variable 'KERNEL_ARCH' is actually a normalized version of 'ARCH'/'BR2_ARCH'. For example, 'arcle' and 'arceb' both become 'arc', just as all powerpc variants become 'powerpc'. It is presumably called 'KERNEL_ARCH' because the Linux kernel is typically the first place where support for a new architecture is added, and thus is the entity that defines the normalized name. However, the term 'KERNEL_ARCH' can also be interpreted as 'the architecture used by the kernel', which need not be exactly the same as 'the normalized name for a certain arch'. In particular, for cases where a 64-bit architecture is running a 64-bit kernel but 32-bit userspace. Examples include: * aarch64 architecture, with aarch64 kernel and 32-bit (ARM) userspace * x86_64 architecture, with x86_64 kernel and 32-bit (i386) userspace In such cases, the 'architecture used by the kernel' needs to refer to the 64-bit name (aarch64, x86_64), whereas all userspace applications need to refer the, potentially normalized, 32-bit name. This means that there need to be two different variables: KERNEL_ARCH: the architecture used by the kernel NORMALIZED_ARCH: the normalized name for the current userspace architecture At this moment, both will actually have the same content. But a subsequent patch will add basic support for situations described above, in which KERNEL_ARCH may become overwritten to the 64-bit architecture, while NORMALIZED_ARCH needs to remain the same (32-bit) case. This commit replaces use of KERNEL_ARCH where actually the userspace arch is needed. Places that use KERNEL_ARCH in combination with building of kernel modules are not touched. There may be cases where a package builds both a kernel module as userspace, in which case it may need to know about both KERNEL_ARCH and NORMALIZED_ARCH, for the case where they differ. But this is to be fixed on a per-need basis. Signed-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com> Reviewed-by: Romain Naour <romain.naour@gmail.com> [Arnout: Also rename BR2_KERNEL_ARCH to BR2_NORMALIZED_ARCH] Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
280 lines
7.1 KiB
Plaintext
280 lines
7.1 KiB
Plaintext
# 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: 64, 64r2, 64r3, 64r5, 64r6
|
|
non-64bit capable: 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_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
|
|
|
|
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; -*-
|