config/arch/arm.in.2
author "Yann E. MORIN" <yann.morin.1998@free.fr>
Thu Jan 10 00:11:17 2013 +0100 (2013-01-10)
changeset 3158 1161ea79915b
parent 3150 1d6fd9bde73c
child 3159 fb71cad4b085
permissions -rw-r--r--
arch/arm: add option to use *eabihf tuples

Toolchains that use the hard-float ABI now are to be denoted by a tuple
ending in *eabihf, while the prevbious *eabi is now an indication that
the toolchain uses the softfloat ABI.

This is purely a cosmetic thing, for distros to differentiate their
hardfloat-ABI ports from their softfloat-ABI ports.

(note: softfloat ABI does not mean that it is using softfloats; it can
be using hardfloat instructions, but using the softfloat ABI).

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
     1 # ARM specific configuration file
     2 
     3 config ARCH_ARM_MODE
     4     string
     5     default "arm"   if ARCH_ARM_MODE_ARM
     6     default "thumb" if ARCH_ARM_MODE_THUMB
     7 
     8 choice
     9     bool
    10     prompt "Default instruction set mode"
    11     default ARCH_ARM_MODE_ARM
    12 
    13 config ARCH_ARM_MODE_ARM
    14     bool
    15     prompt "arm"
    16     help
    17       Defaults to emitting instructions in the ARM mode.
    18 
    19 config ARCH_ARM_MODE_THUMB
    20     bool
    21     prompt "thumb"
    22     help
    23       Defaults to emitting instructions in the THUMB mode.
    24 
    25 endchoice
    26 
    27 config ARCH_ARM_INTERWORKING
    28     bool
    29     prompt "Use Thumb-interworking (READ HELP)"
    30     help
    31       Excerpt from the gcc manual:
    32       
    33       > Generate code which supports calling between the ARM and Thumb
    34       > instruction sets. Without this option the two instruction sets
    35       > cannot be reliably used inside one program. The default is
    36       > [not to use interwork], since slightly larger code is generated
    37       > when [interwork] is specified.
    38       
    39       NOTE: Interworking in crosstool-NG is not sell-tested. Use at your
    40             own risks, and report success and/or failure.
    41 
    42 config ARCH_ARM_EABI
    43     bool
    44     prompt "Use EABI"
    45     default y
    46     help
    47       Set up the toolchain so that it generates EABI-compliant binaries.
    48 
    49 config ARCH_ARM_TUPLE_USE_EABIHF
    50     bool
    51     prompt "append 'hf' to the tuple (EXPERIMENTAL)"
    52     depends on ARCH_FLOAT_HW
    53     depends on ARCH_ARM_EABI    # Until we only support that...
    54     depends on EXPERIMENTAL
    55     help
    56       Is you say 'y' here, then the tuple for the toolchain will end
    57       up with *eabihf, instead of the usual *eabi.
    58 
    59       *eabihf is used to denote that the toolchain *is* using the
    60       hard-float ABI, while *eabi is just an indication of using the
    61       soft-float ABI.
    62 
    63       Ie. all one can say is:  *eabihf ⊢ hard-float ABI
    64 
    65       Saying 'n' here does *not* impact the ability of the toolchain to
    66       generate hard-float instructions with the hard-float ABI. It is a
    67       purely cosmetic thing, used by distros to differentiate their
    68       hard-float-ABI-using ports from their soft-float-ABI-using ports.
    69       (eg. Debian Wheezy and above).
    70 
    71       This is an option, as not all versions of gcc/binutils do support
    72       such tuple, and fail to build with *eabihf. Stock gcc version up
    73       to, and including 4.7.2 have an issue or another with *eabihf.
    74 
    75       This option is here for the future.
    76 
    77       Say 'n', unless you are trying to fix gcc to properly recognise
    78       the *eabihf tuples.
    79 
    80 config ARCH_ARM_ABI_OK
    81     bool
    82     default y
    83     depends on ! ARCH_ARM_EABI
    84     select ARCH_SUPPORTS_WITH_ABI