• Arnd Bergmann's avatar
    ARM: rework endianess selection · 5d6f5267
    Arnd Bergmann authored
    Choosing big-endian vs little-endian kernels in Kconfig has not worked
    correctly since the introduction of CONFIG_ARCH_MULTIPLATFORM a long
    time ago.
    
    The problems is that CONFIG_BIG_ENDIAN depends on
    ARCH_SUPPORTS_BIG_ENDIAN, which can set by any one platform
    in the config, but would actually have to be supported by all
    of them.
    
    This was mostly ok for ARMv6/ARMv7 builds, since these are BE8 and
    tend to just work aside from problems in nonportable device drivers.
    For ARMv4/v5 machines, CONFIG_BIG_ENDIAN and CONFIG_ARCH_MULTIPLATFORM
    were never set together, so this was disabled on all those machines
    except for IXP4xx.
    
    As IXP4xx can now become part of ARCH_MULTIPLATFORM, it seems better to
    formalize this logic: all ARMv4/v5 platforms get an explicit dependency
    on being either big-endian (ixp4xx) or little-endian (the rest). We may
    want to fix ixp4xx in the future to support both, but it does not work
    in LE mode at the moment.
    
    For the ARMv6/v7 platforms, there are two ways this could be handled
    
     a) allow both modes only for platforms selecting
        'ARCH_SUPPORTS_BIG_ENDIAN' today, but only LE mode for the
        others, given that these were added intentionally at some
        point.
    
     b) allow both modes everwhere, given that it was already possible
        to build that way by e.g. selecting ARCH_VIRT, and that the
        list is not an accurate reflection of which platforms may or
        may not work.
    
    Out of these, I picked b) because it seemed slighly more logical
    to me.
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    5d6f5267
Kconfig 3.78 KB