]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - include/linux/jump_label.h
Merge branch 'drm-next-3.15-wip' of git://people.freedesktop.org/~deathsimple/linux...
[karo-tx-linux.git] / include / linux / jump_label.h
index 39999775b92221fa993120954496d15a8a1298b6..5c1dfb2a9e7346f83270a357571093c5db16c26f 100644 (file)
@@ -81,18 +81,21 @@ struct module;
 #include <linux/atomic.h>
 #ifdef HAVE_JUMP_LABEL
 
-#define JUMP_LABEL_TRUE_BRANCH 1UL
+#define JUMP_LABEL_TYPE_FALSE_BRANCH   0UL
+#define JUMP_LABEL_TYPE_TRUE_BRANCH    1UL
+#define JUMP_LABEL_TYPE_MASK           1UL
 
 static
 inline struct jump_entry *jump_label_get_entries(struct static_key *key)
 {
        return (struct jump_entry *)((unsigned long)key->entries
-                                               & ~JUMP_LABEL_TRUE_BRANCH);
+                                               & ~JUMP_LABEL_TYPE_MASK);
 }
 
 static inline bool jump_label_get_branch_default(struct static_key *key)
 {
-       if ((unsigned long)key->entries & JUMP_LABEL_TRUE_BRANCH)
+       if (((unsigned long)key->entries & JUMP_LABEL_TYPE_MASK) ==
+           JUMP_LABEL_TYPE_TRUE_BRANCH)
                return true;
        return false;
 }
@@ -122,10 +125,12 @@ extern void static_key_slow_inc(struct static_key *key);
 extern void static_key_slow_dec(struct static_key *key);
 extern void jump_label_apply_nops(struct module *mod);
 
-#define STATIC_KEY_INIT_TRUE ((struct static_key) \
-       { .enabled = ATOMIC_INIT(1), .entries = (void *)1 })
-#define STATIC_KEY_INIT_FALSE ((struct static_key) \
-       { .enabled = ATOMIC_INIT(0), .entries = (void *)0 })
+#define STATIC_KEY_INIT_TRUE ((struct static_key)              \
+       { .enabled = ATOMIC_INIT(1),                            \
+         .entries = (void *)JUMP_LABEL_TYPE_TRUE_BRANCH })
+#define STATIC_KEY_INIT_FALSE ((struct static_key)             \
+       { .enabled = ATOMIC_INIT(0),                            \
+         .entries = (void *)JUMP_LABEL_TYPE_FALSE_BRANCH })
 
 #else  /* !HAVE_JUMP_LABEL */