# ARM specific configuration file

config ARCH_ARM_MODE
    string
    default "arm"   if ARCH_ARM_MODE_ARM
    default "thumb" if ARCH_ARM_MODE_THUMB

choice
    bool
    prompt "Default instruction set mode"
    default ARCH_ARM_MODE_ARM

config ARCH_ARM_MODE_ARM
    bool
    prompt "arm"
    help
      Defaults to emitting instructions in the ARM mode.

config ARCH_ARM_MODE_THUMB
    bool
    prompt "thumb (EXPERIMENTAL)"
    depends on EXPERIMENTAL
    help
      Defaults to emitting instructions in the THUMB mode.

endchoice

config ARCH_ARM_INTERWORKING
    bool
    prompt "Use Thumb-interworking (READ HELP)"
    depends on EXPERIMENTAL
    help
      Excerpt from the gcc manual:
      
      > Generate code which supports calling between the ARM and Thumb
      > instruction sets. Without this option the two instruction sets
      > cannot be reliably used inside one program. The default is
      > [not to use interwork], since slightly larger code is generated
      > when [interwork] is specified.

config ARCH_ARM_EABI
    bool
    prompt "Use EABI"
    default y
    help
      Set up the toolchain so that it generates EABI-compliant binaries.

config ARCH_ARM_ABI_OK
    bool
    default y
    depends on ! ARCH_ARM_EABI
    select ARCH_SUPPORT_ABI
