On Tue, Oct 01, 2024 at 01:30:01PM +0000, Alice Ryhl wrote:
> diff --git a/arch/arm64/include/asm/jump_label.h 
> b/arch/arm64/include/asm/jump_label.h
> index a0a5bbae7229..424ed421cd97 100644
> --- a/arch/arm64/include/asm/jump_label.h
> +++ b/arch/arm64/include/asm/jump_label.h
> @@ -19,10 +19,14 @@
>  #define JUMP_TABLE_ENTRY(key, label)                 \
>       ".pushsection   __jump_table, \"aw\"\n\t"       \
>       ".align         3\n\t"                          \
> -     ".long          1b - ., %l["#label"] - .\n\t"   \
> -     ".quad          %c0 - .\n\t"                    \
> -     ".popsection\n\t"                               \
> -     :  :  "i"(key) :  : label
> +     ".long          1b - ., " label " - .\n\t"      \
> +     ".quad          " key " - .\n\t"                \
> +     ".popsection\n\t"
> +
> +/* This macro is also expanded on the Rust side. */
> +#define ARCH_STATIC_BRANCH_ASM(key, label)           \
> +     "1:     nop\n\t"                                \
> +     JUMP_TABLE_ENTRY(key, label)
>  
>  static __always_inline bool arch_static_branch(struct static_key * const key,
>                                              const bool branch)
> @@ -30,8 +34,8 @@ static __always_inline bool arch_static_branch(struct 
> static_key * const key,
>       char *k = &((char *)key)[branch];
>  
>       asm goto(
> -             "1:     nop                                     \n\t"
> -             JUMP_TABLE_ENTRY(k, l_yes)
> +             ARCH_STATIC_BRANCH_ASM("%c0", "%l[l_yes]")
> +             :  :  "i"(k) :  : l_yes
>               );
>  
>       return false;
> @@ -43,9 +47,11 @@ static __always_inline bool arch_static_branch_jump(struct 
> static_key * const ke
>                                                   const bool branch)
>  {
>       char *k = &((char *)key)[branch];
> +
>       asm goto(
>               "1:     b               %l[l_yes]               \n\t"
> -             JUMP_TABLE_ENTRY(k, l_yes)
> +             JUMP_TABLE_ENTRY("%c0", "%l[l_yes]")
> +             :  :  "i"(k) :  : l_yes
>               );
>       return false;
>  l_yes:

For the arm64 changes:

Acked-by: Catalin Marinas <[email protected]>

Reply via email to