• Mark Rutland's avatar
    arm64: unify asm-arch manipulation · 1e249c41
    Mark Rutland authored
    Assemblers will reject instructions not supported by a target
    architecture version, and so we must explicitly tell the assembler the
    latest architecture version for which we want to assemble instructions
    from.
    
    We've added a few AS_HAS_ARMV8_<N> definitions for this, in addition to
    an inconsistently named AS_HAS_PAC definition, from which arm64's
    top-level Makefile determines the architecture version that we intend to
    target, and generates the `asm-arch` variable.
    
    To make this a bit clearer and easier to maintain, this patch reworks
    the Makefile to determine asm-arch in a single if-else-endif chain.
    AS_HAS_PAC, which is defined when the assembler supports
    `-march=armv8.3-a`, is renamed to AS_HAS_ARMV8_3.
    
    As the logic for armv8.3-a is lifted out of the block handling pointer
    authentication, `asm-arch` may now be set to armv8.3-a regardless of
    whether support for pointer authentication is selected. This means that
    it will be possible to assemble armv8.3-a instructions even if we didn't
    intend to, but this is consistent with our handling of other
    architecture versions, and the compiler won't generate armv8.3-a
    instructions regardless.
    
    For the moment there's no need for an CONFIG_AS_HAS_ARMV8_1, as the code
    for LSE atomics and LDAPR use individual `.arch_extension` entries and
    do not require the baseline asm arch to be bumped to armv8.1-a. The
    other armv8.1-a features (e.g. PAN) do not require assembler support.
    
    There should be no functional change as a result of this patch.
    Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
    Reviewed-by: default avatarArd Biesheuvel <ardb@kernel.org>
    Reviewed-by: default avatarMark Brown <broonie@kernel.org>
    Cc: Will Deacon <will@kernel.org>
    Link: https://lore.kernel.org/r/20230131105809.991288-2-mark.rutland@arm.comSigned-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    1e249c41
Makefile 7.48 KB