mirror of
https://github.com/torvalds/linux.git
synced 2026-09-14 16:10:02 +02:00
powerpc/jump_label: adjust inline asm to be consistent
Added support for a new macro ARCH_STATIC_BRANCH_ASM in powerpc
to avoid duplication of inline asm between C and Rust. This is
inline with 'commit aecaf18165 ("jump_label: adjust inline asm to be consistent")'
Co-developed-by: Madhavan Srinivasan <maddy@linux.ibm.com>
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
Reviewed-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>
Reviewed-by: Gary Guo <gary@garyguo.net>
Link: https://github.com/Rust-for-Linux/linux/issues/105
Link: https://github.com/linuxppc/issues/issues/451
Signed-off-by: Mukesh Kumar Chaurasiya (IBM) <mkchauras@gmail.com>
Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
Link: https://patch.msgid.link/20260708082454.1254320-4-mkchauras@gmail.com
This commit is contained in:
parent
be809b60cb
commit
13244c0a40
|
|
@ -15,14 +15,20 @@
|
|||
#define JUMP_ENTRY_TYPE stringify_in_c(FTR_ENTRY_LONG)
|
||||
#define JUMP_LABEL_NOP_SIZE 4
|
||||
|
||||
#define JUMP_TABLE_ENTRY(key, label) \
|
||||
".pushsection __jump_table, \"aw\" \n\t" \
|
||||
".long 1b - ., " label " - . \n\t" \
|
||||
JUMP_ENTRY_TYPE key " - . \n\t" \
|
||||
".popsection \n\t"
|
||||
|
||||
#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 *key, bool branch)
|
||||
{
|
||||
asm goto("1:\n\t"
|
||||
"nop # arch_static_branch\n\t"
|
||||
".pushsection __jump_table, \"aw\"\n\t"
|
||||
".long 1b - ., %l[l_yes] - .\n\t"
|
||||
JUMP_ENTRY_TYPE "%c0 - .\n\t"
|
||||
".popsection \n\t"
|
||||
asm goto(
|
||||
ARCH_STATIC_BRANCH_ASM("%c0", "%l[l_yes]")
|
||||
: : "i" (&((char *)key)[branch]) : : l_yes);
|
||||
|
||||
return false;
|
||||
|
|
@ -34,10 +40,7 @@ static __always_inline bool arch_static_branch_jump(struct static_key *key, bool
|
|||
{
|
||||
asm goto("1:\n\t"
|
||||
"b %l[l_yes] # arch_static_branch_jump\n\t"
|
||||
".pushsection __jump_table, \"aw\"\n\t"
|
||||
".long 1b - ., %l[l_yes] - .\n\t"
|
||||
JUMP_ENTRY_TYPE "%c0 - .\n\t"
|
||||
".popsection \n\t"
|
||||
JUMP_TABLE_ENTRY("%c0", "%l[l_yes]")
|
||||
: : "i" (&((char *)key)[branch]) : : l_yes);
|
||||
|
||||
return false;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user