On Fri, Jul 24, 2015 at 07:52:15PM +0200, Peter Zijlstra wrote:
> --- a/arch/s390/include/asm/jump_label.h
> +++ b/arch/s390/include/asm/jump_label.h
> @@ -12,14 +12,29 @@
>   * We use a brcl 0,2 instruction for jump labels at compile time so it
>   * can be easily distinguished from a hotpatch generated instruction.
>   */
> -static __always_inline bool arch_static_branch(struct static_key *key)
> +static __always_inline bool arch_static_branch(struct static_key *key, bool 
> branch)
>  {
>       asm_volatile_goto("0:   brcl 0,"__stringify(JUMP_LABEL_NOP_OFFSET)"\n"
>               ".pushsection __jump_table, \"aw\"\n"
>               ".balign 8\n"
>               ".quad 0b, %l[label], %0\n"
>               ".popsection\n"
> -             : : "X" (key) : : label);
> +             : : "X" (&((char *)key)[branch]) : : label);
> +
> +     return false;
> +label:
> +     return true;
> +}
> +
> +static __always_inline bool arch_static_branch_jump(struct static_key *key, 
> bool branch)
> +{
> +     asm_volatile_goto("0:   j %l[l_yes]\n"

Looking at the s390 version of jump_label_make_branch(), this should
have been:

                "brcl 15, %l[l_yes]\n"

I suppose?

> +             ".pushsection __jump_table, \"aw\"\n"
> +             ".balign 8\n"
> +             ".quad 0b, %l[label], %0\n"
> +             ".popsection\n"
> +             : : "X" (&((char *)key)[branch]) : : label);
> +
>       return false;
>  label:
>       return true;
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to