Commit c0ccf6f9 authored by Anton Blanchard's avatar Anton Blanchard Committed by Ingo Molnar

jump_label: Allow jump labels to be used in assembly

To use jump labels in assembly we need the HAVE_JUMP_LABEL
define, so we select a fallback version if the toolchain does
not support them.

Modify linux/jump_label.h so it can be included by assembly
files. We also need to add -DCC_HAVE_ASM_GOTO to KBUILD_AFLAGS.
Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
Acked-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: benh@kernel.crashing.org
Cc: catalin.marinas@arm.com
Cc: davem@davemloft.net
Cc: heiko.carstens@de.ibm.com
Cc: jbaron@akamai.com
Cc: linux@arm.linux.org.uk
Cc: linuxppc-dev@lists.ozlabs.org
Cc: liuj97@gmail.com
Cc: mgorman@suse.de
Cc: mmarek@suse.cz
Cc: mpe@ellerman.id.au
Cc: paulus@samba.org
Cc: ralf@linux-mips.org
Cc: rostedt@goodmis.org
Cc: schwidefsky@de.ibm.com
Cc: will.deacon@arm.com
Link: http://lkml.kernel.org/r/1428551492-21977-2-git-send-email-anton@samba.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
parent 55dd0df7
...@@ -779,6 +779,7 @@ KBUILD_ARFLAGS := $(call ar-option,D) ...@@ -779,6 +779,7 @@ KBUILD_ARFLAGS := $(call ar-option,D)
# check for 'asm goto' # check for 'asm goto'
ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-goto.sh $(CC)), y) ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-goto.sh $(CC)), y)
KBUILD_CFLAGS += -DCC_HAVE_ASM_GOTO KBUILD_CFLAGS += -DCC_HAVE_ASM_GOTO
KBUILD_AFLAGS += -DCC_HAVE_ASM_GOTO
endif endif
include $(srctree)/scripts/Makefile.kasan include $(srctree)/scripts/Makefile.kasan
......
...@@ -45,6 +45,12 @@ ...@@ -45,6 +45,12 @@
* same as using STATIC_KEY_INIT_FALSE. * same as using STATIC_KEY_INIT_FALSE.
*/ */
#if defined(CC_HAVE_ASM_GOTO) && defined(CONFIG_JUMP_LABEL)
# define HAVE_JUMP_LABEL
#endif
#ifndef __ASSEMBLY__
#include <linux/types.h> #include <linux/types.h>
#include <linux/compiler.h> #include <linux/compiler.h>
#include <linux/bug.h> #include <linux/bug.h>
...@@ -55,7 +61,7 @@ extern bool static_key_initialized; ...@@ -55,7 +61,7 @@ extern bool static_key_initialized;
"%s used before call to jump_label_init", \ "%s used before call to jump_label_init", \
__func__) __func__)
#if defined(CC_HAVE_ASM_GOTO) && defined(CONFIG_JUMP_LABEL) #ifdef HAVE_JUMP_LABEL
struct static_key { struct static_key {
atomic_t enabled; atomic_t enabled;
...@@ -66,13 +72,18 @@ struct static_key { ...@@ -66,13 +72,18 @@ struct static_key {
#endif #endif
}; };
# include <asm/jump_label.h>
# define HAVE_JUMP_LABEL
#else #else
struct static_key { struct static_key {
atomic_t enabled; atomic_t enabled;
}; };
#endif /* CC_HAVE_ASM_GOTO && CONFIG_JUMP_LABEL */ #endif /* HAVE_JUMP_LABEL */
#endif /* __ASSEMBLY__ */
#ifdef HAVE_JUMP_LABEL
#include <asm/jump_label.h>
#endif
#ifndef __ASSEMBLY__
enum jump_label_type { enum jump_label_type {
JUMP_LABEL_DISABLE = 0, JUMP_LABEL_DISABLE = 0,
...@@ -203,3 +214,5 @@ static inline bool static_key_enabled(struct static_key *key) ...@@ -203,3 +214,5 @@ static inline bool static_key_enabled(struct static_key *key)
} }
#endif /* _LINUX_JUMP_LABEL_H */ #endif /* _LINUX_JUMP_LABEL_H */
#endif /* __ASSEMBLY__ */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment