• Vincenzo Frascino's avatar
    arm64: lse: Fix LSE atomics with LLVM · dd1f6308
    Vincenzo Frascino authored
    Commit e0d5896b ("arm64: lse: fix LSE atomics with LLVM's integrated
    assembler") broke the build when clang is used in connjunction with the
    binutils assembler ("-no-integrated-as"). This happens because
    __LSE_PREAMBLE is defined as ".arch armv8-a+lse", which overrides the
    version of the CPU architecture passed via the "-march" paramter to gas:
    
    $ aarch64-none-linux-gnu-as -EL -I ./arch/arm64/include
                                    -I ./arch/arm64/include/generated
                                    -I ./include -I ./include
                                    -I ./arch/arm64/include/uapi
                                    -I ./arch/arm64/include/generated/uapi
                                    -I ./include/uapi -I ./include/generated/uapi
                                    -I ./init -I ./init
                                    -march=armv8.3-a -o init/do_mounts.o
                                    /tmp/do_mounts-d7992a.s
    /tmp/do_mounts-d7992a.s: Assembler messages:
    /tmp/do_mounts-d7992a.s:1959: Error: selected processor does not support `autiasp'
    /tmp/do_mounts-d7992a.s:2021: Error: selected processor does not support `paciasp'
    /tmp/do_mounts-d7992a.s:2157: Error: selected processor does not support `autiasp'
    /tmp/do_mounts-d7992a.s:2175: Error: selected processor does not support `paciasp'
    /tmp/do_mounts-d7992a.s:2494: Error: selected processor does not support `autiasp'
    
    Fix the issue by replacing ".arch armv8-a+lse" with ".arch_extension lse".
    Sami confirms that the clang integrated assembler does now support the
    '.arch_extension' directive, so this change will be fine even for LTO
    builds in future.
    
    Fixes: e0d5896b ("arm64: lse: fix LSE atomics with LLVM's integrated assembler")
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Reported-by: default avatarAmit Kachhap <Amit.Kachhap@arm.com>
    Tested-by: default avatarSami Tolvanen <samitolvanen@google.com>
    Signed-off-by: default avatarVincenzo Frascino <vincenzo.frascino@arm.com>
    Signed-off-by: default avatarWill Deacon <will@kernel.org>
    dd1f6308
lse.h 1.24 KB