config/arch/arm.in.2
author "Yann E. MORIN" <yann.morin.1998@free.fr>
Sun May 11 23:43:52 2014 +0200 (2014-05-11)
changeset 3320 78af1c99bc6d
parent 3158 1161ea79915b
permissions -rw-r--r--
scripts/functions: add target_endian_le and target_endian_be

We currently define target_endian_el and target_endian_eb to be the
tuple extension depending on endianness, defined to be respectively
'el' or 'eb' according to the endianness.

Some architecture do not use 'el' or 'eb', but use 'le' or 'be'.

Provide that as well, as two new variables: target_endian_le and
target_endian_be.

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