jump_label: Abstract jump_entry member accessors
In preparation of allowing architectures to use relative references in jump_label entries [which can dramatically reduce the memory footprint], introduce abstractions for references to the 'code' and 'key' members of struct jump_entry. Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org> Cc: linux-arm-kernel@lists.infradead.org Cc: linux-s390@vger.kernel.org Cc: Arnd Bergmann <arnd@arndb.de> Cc: Heiko Carstens <heiko.carstens@de.ibm.com> Cc: Kees Cook <keescook@chromium.org> Cc: Will Deacon <will.deacon@arm.com> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Cc: Jessica Yu <jeyu@kernel.org> Link: https://lkml.kernel.org/r/20180919065144.25010-2-ard.biesheuvel@linaro.org
This commit is contained in:

committed by
Thomas Gleixner

parent
6bf4ca7fbc
commit
9ae033aca8
@@ -119,6 +119,40 @@ struct static_key {
|
||||
|
||||
#ifdef HAVE_JUMP_LABEL
|
||||
#include <asm/jump_label.h>
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
static inline unsigned long jump_entry_code(const struct jump_entry *entry)
|
||||
{
|
||||
return entry->code;
|
||||
}
|
||||
|
||||
static inline unsigned long jump_entry_target(const struct jump_entry *entry)
|
||||
{
|
||||
return entry->target;
|
||||
}
|
||||
|
||||
static inline struct static_key *jump_entry_key(const struct jump_entry *entry)
|
||||
{
|
||||
return (struct static_key *)((unsigned long)entry->key & ~1UL);
|
||||
}
|
||||
|
||||
static inline bool jump_entry_is_branch(const struct jump_entry *entry)
|
||||
{
|
||||
return (unsigned long)entry->key & 1UL;
|
||||
}
|
||||
|
||||
static inline bool jump_entry_is_init(const struct jump_entry *entry)
|
||||
{
|
||||
return entry->code == 0;
|
||||
}
|
||||
|
||||
static inline void jump_entry_set_init(struct jump_entry *entry)
|
||||
{
|
||||
entry->code = 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
Reference in New Issue
Block a user