MIPS: Declare MSA MI10 instruction formats
authorLeonid Yegoshin <Leonid.Yegoshin@imgtec.com>
Mon, 22 Jun 2015 11:20:58 +0000 (12:20 +0100)
committerRalf Baechle <ralf@linux-mips.org>
Thu, 3 Sep 2015 10:07:39 +0000 (12:07 +0200)
Declare a struct describing the MSA MI10 instruction format used for ld &
st instructions, for use by subsequent patches.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Cc: linux-mips@linux-mips.org
Cc: Leonid Yegoshin <Leonid.Yegoshin@imgtec.com>
Cc: Steven J. Hill <Steven.Hill@imgtec.com>
Cc: linux-kernel@vger.kernel.org
Cc: Markos Chandras <markos.chandras@imgtec.com>
Patchwork: https://patchwork.linux-mips.org/patch/10571/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/include/uapi/asm/inst.h

index fc0cf5ac0cf72ce28a38eec08a422719343ba4e4..3dce80e679488d42623a874852ee18faaa7fcd83 100644 (file)
@@ -26,7 +26,7 @@ enum major_op {
        cop0_op, cop1_op, cop2_op, cop1x_op,
        beql_op, bnel_op, blezl_op, bgtzl_op,
        daddi_op, cbcond1_op = daddi_op, daddiu_op, ldl_op, ldr_op,
-       spec2_op, jalx_op, mdmx_op, spec3_op,
+       spec2_op, jalx_op, mdmx_op, msa_op = mdmx_op, spec3_op,
        lb_op, lh_op, lwl_op, lw_op,
        lbu_op, lhu_op, lwr_op, lwu_op,
        sb_op, sh_op, swl_op, sw_op,
@@ -220,6 +220,24 @@ enum bshfl_func {
        seh_op  = 0x18,
 };
 
+/*
+ * func field for MSA MI10 format.
+ */
+enum msa_mi10_func {
+       msa_ld_op = 8,
+       msa_st_op = 9,
+};
+
+/*
+ * MSA 2 bit format fields.
+ */
+enum msa_2b_fmt {
+       msa_fmt_b = 0,
+       msa_fmt_h = 1,
+       msa_fmt_w = 2,
+       msa_fmt_d = 3,
+};
+
 /*
  * (microMIPS) Major opcodes.
  */
@@ -611,6 +629,16 @@ struct v_format {                          /* MDMX vector format */
        ;)))))))
 };
 
+struct msa_mi10_format {               /* MSA MI10 */
+       __BITFIELD_FIELD(unsigned int opcode : 6,
+       __BITFIELD_FIELD(signed int s10 : 10,
+       __BITFIELD_FIELD(unsigned int rs : 5,
+       __BITFIELD_FIELD(unsigned int wd : 5,
+       __BITFIELD_FIELD(unsigned int func : 4,
+       __BITFIELD_FIELD(unsigned int df : 2,
+       ;))))))
+};
+
 struct spec3_format {   /* SPEC3 */
        __BITFIELD_FIELD(unsigned int opcode:6,
        __BITFIELD_FIELD(unsigned int rs:5,
@@ -888,6 +916,7 @@ union mips_instruction {
        struct p_format p_format;
        struct f_format f_format;
        struct ma_format ma_format;
+       struct msa_mi10_format msa_mi10_format;
        struct b_format b_format;
        struct ps_format ps_format;
        struct v_format v_format;