Merge branch 'for-3.19' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu
[sfrench/cifs-2.6.git] / arch / arm64 / kernel / insn.c
index 8cd27fedc8b6a14caa41fac458549695d4ecb7f9..7e9327a0986dc5305f74f5e9bdfb224eccec21c6 100644 (file)
@@ -960,3 +960,29 @@ u32 aarch64_insn_gen_logical_shifted_reg(enum aarch64_insn_register dst,
 
        return aarch64_insn_encode_immediate(AARCH64_INSN_IMM_6, insn, shift);
 }
+
+bool aarch32_insn_is_wide(u32 insn)
+{
+       return insn >= 0xe800;
+}
+
+/*
+ * Macros/defines for extracting register numbers from instruction.
+ */
+u32 aarch32_insn_extract_reg_num(u32 insn, int offset)
+{
+       return (insn & (0xf << offset)) >> offset;
+}
+
+#define OPC2_MASK      0x7
+#define OPC2_OFFSET    5
+u32 aarch32_insn_mcr_extract_opc2(u32 insn)
+{
+       return (insn & (OPC2_MASK << OPC2_OFFSET)) >> OPC2_OFFSET;
+}
+
+#define CRM_MASK       0xf
+u32 aarch32_insn_mcr_extract_crm(u32 insn)
+{
+       return insn & CRM_MASK;
+}