• Jisheng Zhang's avatar
    arm64: alternative: constify alternative_has_feature_* argument · b9024f87
    Jisheng Zhang authored
    Inspired by x86 commit 864b4355("x86/jump_label: Mark arguments as
    const to satisfy asm constraints"), constify alternative_has_feature_*
    argument to satisfy asm constraints. And Steven in [1] also pointed
    out that "The "i" constraint needs to be a constant."
    
    Tested with building a simple external kernel module with "O0".
    
    Before the patch, got similar gcc warnings and errors as below:
    
    In file included from <command-line>:
    In function ‘alternative_has_feature_likely’,
        inlined from ‘system_capabilities_finalized’ at
    arch/arm64/include/asm/cpufeature.h:440:9,
        inlined from ‘arm64_preempt_schedule_irq’ at
    arch/arm64/kernel/entry-common.c:264:6:
    include/linux/compiler_types.h:285:33: warning:
    ‘asm’ operand 0 probably does not match constraints
      285 | #define asm_volatile_goto(x...) asm goto(x)
          |                                 ^~~
    arch/arm64/include/asm/alternative-macros.h:232:9:
    note: in expansion of macro ‘asm_volatile_goto’
      232 |         asm_volatile_goto(
          |         ^~~~~~~~~~~~~~~~~
    include/linux/compiler_types.h:285:33: error:
    impossible constraint in ‘asm’
      285 | #define asm_volatile_goto(x...) asm goto(x)
          |                                 ^~~
    arch/arm64/include/asm/alternative-macros.h:232:9:
    note: in expansion of macro ‘asm_volatile_goto’
      232 |         asm_volatile_goto(
          |         ^~~~~~~~~~~~~~~~~
    
    After the patch, the simple external test kernel module is built fine
    with "-O0".
    
    [1]https://lore.kernel.org/all/20210212094059.5f8d05e8@gandalf.local.home/Signed-off-by: default avatarJisheng Zhang <jszhang@kernel.org>
    Link: https://lore.kernel.org/r/20221006075542.2658-3-jszhang@kernel.orgSigned-off-by: default avatarWill Deacon <will@kernel.org>
    b9024f87
alternative-macros.h 6.49 KB