• Heiko Stuebner's avatar
    RISC-V: fix compile error from deduplicated __ALTERNATIVE_CFG_2 · d374a165
    Heiko Stuebner authored
    On the non-assembler-side wrapping alternative-macros inside other macros
    to prevent duplication of code works, as the end result will just be a
    string that gets fed to the asm instruction.
    
    In real assembler code, wrapping .macro blocks inside other .macro blocks
    brings more restrictions on usage it seems and the optimization done by
    commit 2ba8c7dc ("riscv: Don't duplicate __ALTERNATIVE_CFG in __ALTERNATIVE_CFG_2")
    results in a compile error like:
    
    ../arch/riscv/lib/strcmp.S: Assembler messages:
    ../arch/riscv/lib/strcmp.S:15: Error: too many positional arguments
    ../arch/riscv/lib/strcmp.S:15: Error: backward ref to unknown label "886:"
    ../arch/riscv/lib/strcmp.S:15: Error: backward ref to unknown label "887:"
    ../arch/riscv/lib/strcmp.S:15: Error: backward ref to unknown label "886:"
    ../arch/riscv/lib/strcmp.S:15: Error: backward ref to unknown label "887:"
    ../arch/riscv/lib/strcmp.S:15: Error: backward ref to unknown label "886:"
    ../arch/riscv/lib/strcmp.S:15: Error: attempt to move .org backwards
    
    Wrapping the variables containing assembler code in quotes solves this issue,
    compilation and the code in question still works and objdump also shows sane
    decompiled results of the affected code.
    
    Fixes: 2ba8c7dc ("riscv: Don't duplicate __ALTERNATIVE_CFG in __ALTERNATIVE_CFG_2")
    Signed-off-by: default avatarHeiko Stuebner <heiko.stuebner@vrull.eu>
    Reviewed-by: default avatarPalmer Dabbelt <palmer@rivosinc.com>
    Reviewed-by: default avatarAndrew Jones <ajones@ventanamicro.com>
    Link: https://lore.kernel.org/r/20230105192610.1940841-1-heiko@sntech.de
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarPalmer Dabbelt <palmer@rivosinc.com>
    d374a165
alternative-macros.h 4.95 KB