*/
 #ifndef        __ASM_INSN_H
 #define        __ASM_INSN_H
+#include <linux/build_bug.h>
 #include <linux/types.h>
 
 /* A64 instructions are always 32 bits. */
        AARCH64_INSN_ADR_TYPE_ADR,
 };
 
-#define        __AARCH64_INSN_FUNCS(abbr, mask, val)   \
-static __always_inline bool aarch64_insn_is_##abbr(u32 code) \
-{ return (code & (mask)) == (val); } \
-static __always_inline u32 aarch64_insn_get_##abbr##_value(void) \
-{ return (val); }
+#define        __AARCH64_INSN_FUNCS(abbr, mask, val)                           \
+static __always_inline bool aarch64_insn_is_##abbr(u32 code)           \
+{                                                                      \
+       BUILD_BUG_ON(~(mask) & (val));                                  \
+       return (code & (mask)) == (val);                                \
+}                                                                      \
+static __always_inline u32 aarch64_insn_get_##abbr##_value(void)       \
+{                                                                      \
+       return (val);                                                   \
+}
 
 __AARCH64_INSN_FUNCS(adr,      0x9F000000, 0x10000000)
 __AARCH64_INSN_FUNCS(adrp,     0x9F000000, 0x90000000)