aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/include/asm/jump_label.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/arch/x86/include/asm/jump_label.h b/arch/x86/include/asm/jump_label.h
index 3a16c1483b45..64507f35800c 100644
--- a/arch/x86/include/asm/jump_label.h
+++ b/arch/x86/include/asm/jump_label.h
@@ -3,18 +3,23 @@
3 3
4#ifdef __KERNEL__ 4#ifdef __KERNEL__
5 5
6#include <linux/stringify.h>
6#include <linux/types.h> 7#include <linux/types.h>
7#include <asm/nops.h> 8#include <asm/nops.h>
8#include <asm/asm.h> 9#include <asm/asm.h>
9 10
10#define JUMP_LABEL_NOP_SIZE 5 11#define JUMP_LABEL_NOP_SIZE 5
11 12
12#define STATIC_KEY_INITIAL_NOP ".byte 0xe9 \n\t .long 0\n\t" 13#ifdef CONFIG_X86_64
14# define STATIC_KEY_INIT_NOP P6_NOP5_ATOMIC
15#else
16# define STATIC_KEY_INIT_NOP GENERIC_NOP5_ATOMIC
17#endif
13 18
14static __always_inline bool arch_static_branch(struct static_key *key) 19static __always_inline bool arch_static_branch(struct static_key *key)
15{ 20{
16 asm goto("1:" 21 asm goto("1:"
17 STATIC_KEY_INITIAL_NOP 22 ".byte " __stringify(STATIC_KEY_INIT_NOP) "\n\t"
18 ".pushsection __jump_table, \"aw\" \n\t" 23 ".pushsection __jump_table, \"aw\" \n\t"
19 _ASM_ALIGN "\n\t" 24 _ASM_ALIGN "\n\t"
20 _ASM_PTR "1b, %l[l_yes], %c0 \n\t" 25 _ASM_PTR "1b, %l[l_yes], %c0 \n\t"