• Mark Rutland's avatar
    arm64: fix the build with binutils 2.27 · ba00c2a0
    Mark Rutland authored
    Jon Hunter reports that for some toolchains the build has been broken
    since commit:
    
      4c0bd995 ("arm64: alternatives: have callbacks take a cap")
    
    ... with a stream of build-time splats of the form:
    
    |   CC      arch/arm64/kvm/hyp/vhe/debug-sr.o
    | /tmp/ccY3kbki.s: Assembler messages:
    | /tmp/ccY3kbki.s:1600: Error: found 'L', expected: ')'
    | /tmp/ccY3kbki.s:1600: Error: found 'L', expected: ')'
    | /tmp/ccY3kbki.s:1600: Error: found 'L', expected: ')'
    | /tmp/ccY3kbki.s:1600: Error: found 'L', expected: ')'
    | /tmp/ccY3kbki.s:1600: Error: junk at end of line, first unrecognized character
    | is `L'
    | /tmp/ccY3kbki.s:1723: Error: found 'L', expected: ')'
    | /tmp/ccY3kbki.s:1723: Error: found 'L', expected: ')'
    | /tmp/ccY3kbki.s:1723: Error: found 'L', expected: ')'
    | /tmp/ccY3kbki.s:1723: Error: found 'L', expected: ')'
    | /tmp/ccY3kbki.s:1723: Error: junk at end of line, first unrecognized character
    | is `L'
    | scripts/Makefile.build:249: recipe for target
    | 'arch/arm64/kvm/hyp/vhe/debug-sr.o' failed
    
    The issue here is that older versions of binutils (up to and including
    2.27.0) don't like an 'L' suffix on constants. For plain assembly files,
    UL() avoids this suffix, but in C files this gets added, and so for
    inline assembly we can't directly use a constant defined with `UL()`.
    
    We could avoid this by passing the constant as an input parameter, but
    this isn't practical given the way we use the alternative macros.
    Instead, just open code the constant without the `UL` suffix, and for
    consistency do this for both the inline assembly macro and the regular
    assembly macro.
    Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
    Fixes: 4c0bd995 ("arm64: alternatives: have callbacks take a cap")
    Reported-by: default avatarJon Hunter <jonathanh@nvidia.com>
    Link: https://lore.kernel.org/linux-arm-kernel/3cecc3a5-30b0-f0bd-c3de-9e09bd21909b@nvidia.com/Tested-by: default avatarJon Hunter <jonathanh@nvidia.com>
    Cc: Ard Biesheuvel <ardb@kernel.org>
    Cc: Will Deacon <will@kernel.org>
    Link: https://lore.kernel.org/r/20220929150227.1028556-1-mark.rutland@arm.comSigned-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    ba00c2a0
alternative-macros.h 6.48 KB