Removed v850 sanitization.
[deliverable/binutils-gdb.git] / opcodes / v850-opc.c
index 5d0dce4a946763ec44062d00904ddf2cfee66752..3ed28b54f59c2b4de86f5ea88feaa8af807f691d 100644 (file)
@@ -108,7 +108,7 @@ insert_d16_15 (insn, value, errmsg)
 static unsigned long
 extract_d16_15 (insn, invalid)
      unsigned long insn;
-     int *invalid;
+     int *         invalid;
 {
   signed long ret = (insn & 0xfffe0000);
 
@@ -335,6 +335,9 @@ extract_i5div (insn, invalid)
 /* end-sanitize-v850eq */
 
 \f
+/* Warning: code in gas/config/tc-v850.c examines the contents of this array.
+   If you change any of the values here, be sure to look for side effects in
+   that code. */
 const struct v850_operand v850_operands[] =
 {
 #define UNUSED 0
@@ -344,7 +347,7 @@ const struct v850_operand v850_operands[] =
 #define R1     (UNUSED+1)
   { 5, 0, 0, 0, V850_OPERAND_REG }, 
 
-/* The R1 field in a format 1, 6, 7, or 9 insn. */
+/* As above, but register 0 is not allowed.  */
 #define R1_NOTR0 (R1 + 1)
   { 5, 0, 0, 0, V850_OPERAND_REG | V850_NOT_R0 }, 
 
@@ -352,89 +355,90 @@ const struct v850_operand v850_operands[] =
 #define R2     (R1_NOTR0 + 1)
   { 5, 11, 0, 0, V850_OPERAND_REG },
 
-/* The R2 field in a format 1, 2, 4, 5, 6, 7, 9 insn. */
+/* As above, but register 0 is not allowed.  */
 #define R2_NOTR0 (R2 + 1)
   { 5, 11, 0, 0, V850_OPERAND_REG | V850_NOT_R0 },
 
-/* The IMM5 field in a format 2 insn. */
+/* The imm5 field in a format 2 insn. */
 #define I5     (R2_NOTR0 + 1)
   { 5, 0, 0, 0, V850_OPERAND_SIGNED }, 
 
-#define I5U    (I5+1)
+/* The unsigned imm5 field in a format 2 insn. */
+#define I5U    (I5 + 1)
   { 5, 0, 0, 0, 0 },
 
-/* The IMM16 field in a format 6 insn. */
-#define I16    (I5U+1)
+/* The imm16 field in a format 6 insn. */
+#define I16    (I5U + 1)
   { 16, 16, 0, 0, V850_OPERAND_SIGNED }, 
 
-/* The signed DISP7 field in a format 4 insn. */
-#define D7     (I16+1)
+/* The signed disp7 field in a format 4 insn. */
+#define D7     (I16 + 1)
   { 7, 0, 0, 0, 0},
 
-/* The DISP16 field in a format 6 insn. */
-#define D16_15 (D7+1)
-  { 16, 16, insert_d16_15, extract_d16_15, V850_OPERAND_SIGNED }, 
+/* The disp16 field in a format 6 insn. */
+#define D16_15 (D7 + 1)
+  { 15, 17, insert_d16_15, extract_d16_15, V850_OPERAND_SIGNED }, 
 
-#define B3     (D16_15+1)
 /* The 3 bit immediate field in format 8 insn.  */
+#define B3     (D16_15 + 1)
   { 3, 11, 0, 0, 0 },
 
-#define CCCC   (B3+1)
 /* The 4 bit condition code in a setf instruction */
+#define CCCC   (B3 + 1)
   { 4, 0, 0, 0, V850_OPERAND_CC },
 
-/* The unsigned DISP8_7 field in a format 4 insn. */
-#define D8_7   (CCCC+1)
-  { 8, 0, insert_d8_7, extract_d8_7, V850_OPERAND_ADJUST_SHORT_MEMORY },
+/* The unsigned DISP8 field in a format 4 insn. */
+#define D8_7   (CCCC + 1)
+  { 7, 0, insert_d8_7, extract_d8_7, 0 },
 
-/* The unsigned DISP8_6 field in a format 4 insn. */
-#define D8_6   (D8_7+1)
-  { 8, 0, insert_d8_6, extract_d8_6, V850_OPERAND_ADJUST_SHORT_MEMORY },
+/* The unsigned DISP8 field in a format 4 insn. */
+#define D8_6   (D8_7 + 1)
+  { 6, 1, insert_d8_6, extract_d8_6, 0 },
 
 /* System register operands.  */
-#define SR1    (D8_6+1)
+#define SR1    (D8_6 + 1)
   { 5, 0, 0, 0, V850_OPERAND_SRG },
 
 /* EP Register.  */
-#define EP     (SR1+1)
+#define EP     (SR1 + 1)
   { 0, 0, 0, 0, V850_OPERAND_EP },
 
-/* The IMM16 field (unsigned0 in a format 6 insn. */
-#define I16U   (EP+1)
+/* The imm16 field (unsigned) in a format 6 insn. */
+#define I16U   (EP + 1)
   { 16, 16, 0, 0, 0}, 
 
 /* The R2 field as a system register.  */
-#define SR2    (I16U+1)
+#define SR2    (I16U + 1)
   { 5, 11, 0, 0, V850_OPERAND_SRG },
 
-/* The DISP16 field in a format 8 insn. */
-#define D16    (SR2+1)
+/* The disp16 field in a format 8 insn. */
+#define D16    (SR2 + 1)
   { 16, 16, 0, 0, V850_OPERAND_SIGNED }, 
 
 /* The DISP22 field in a format 4 insn, relaxable. */
-#define D9_RELAX       (D16+1)
+#define D9_RELAX       (D16 + 1)
   { 9, 0, insert_d9, extract_d9, V850_OPERAND_RELAX | V850_OPERAND_SIGNED | V850_OPERAND_DISP },
 
 /* The DISP22 field in a format 4 insn.
 
    This _must_ follow D9_RELAX; the assembler assumes that the longer
    version immediately follows the shorter version for relaxing.  */
-#define D22    (D9_RELAX+1)
+#define D22    (D9_RELAX + 1)
   { 22, 0, insert_d22, extract_d22, V850_OPERAND_SIGNED | V850_OPERAND_DISP },
 
 /* start-sanitize-v850e */
   
-/* The signed DISP4 field in a format 4 insn. */
-#define D4     (D22+1)
+/* The signed disp4 field in a format 4 insn. */
+#define D4     (D22 + 1)
   { 4, 0, 0, 0, 0},
 
-/* The unsigned DISP5_4 field in a format 4 insn. */
+/* The unsigned disp5 field in a format 4 insn. */
 #define D5_4   (D4 + 1)
-  { 5, 0, insert_d5_4, extract_d5_4, V850_OPERAND_ADJUST_SHORT_MEMORY },
+  { 4, 0, insert_d5_4, extract_d5_4, 0 },
 
-/* The DISP16 field in an unsigned format 7 byte load insn. */
+/* The disp16 field in an format 7 unsigned byte load insn. */
 #define D16_16 (D5_4 + 1)
-  { 16, 16, insert_d16_16, extract_d16_16, 0 }, 
+  { -1, 0xfffe0020, insert_d16_16, extract_d16_16, 0 }, 
 
 /* Third register in conditional moves. */
 #define R3     (D16_16 + 1)
@@ -444,11 +448,11 @@ const struct v850_operand v850_operands[] =
 #define MOVCC  (R3 + 1)
   { 4, 17, 0, 0, V850_OPERAND_CC },
 
-/* The IMM9 field in a multiply word. */
+/* The imm9 field in a multiply word. */
 #define I9     (MOVCC + 1)
   { 9, 0, insert_i9, extract_i9, V850_OPERAND_SIGNED }, 
 
-/* The IMM9 field in a multiply word. */
+/* The unsigned imm9 field in a multiply word. */
 #define U9     (I9 + 1)
   { 9, 0, insert_u9, extract_u9, 0 }, 
 
@@ -468,7 +472,7 @@ const struct v850_operand v850_operands[] =
 #define IMM32  (IMM16 + 1)
   { 0, 0, 0, 0, V850E_IMMEDIATE32 }, 
 
-/* The IMM5 field in a push/pop instruction. */
+/* The imm5 field in a push/pop instruction. */
 #define IMM5   (IMM32 + 1)
   { 5, 1, 0, 0, 0 }, 
 
@@ -541,17 +545,21 @@ const struct v850_opcode v850_opcodes[] =
 { "jmp",       one (0x0060),           one (0xffe0),           {R1},                   1 },
   
 /* load/store instructions */
+/* start-sanitize-v850eq */
 #ifdef ARCH_v850eq
 { "sld.bu",    one (0x0300),           one (0x0780),           {D7,   EP,   R2_NOTR0}, 1 },
 { "sld.hu",    one (0x0400),           one (0x0780),           {D8_7, EP,   R2_NOTR0}, 1 },
 { "sld.b",      one (0x0060),          one (0x07f0),           {D4,   EP,   R2},       1 },
 { "sld.h",      one (0x0070),          one (0x07f0),           {D5_4, EP,   R2},       1 },
 #else
+/* end-sanitize-v850eq */
 { "sld.b",     one (0x0300),           one (0x0780),           {D7,   EP,   R2},       1 },
 { "sld.h",     one (0x0400),           one (0x0780),           {D8_7, EP,   R2},       1 },
 { "sld.bu",     one (0x0060),          one (0x07f0),           {D4,   EP,   R2_NOTR0}, 1 },
 { "sld.hu",     one (0x0070),          one (0x07f0),           {D5_4, EP,   R2_NOTR0}, 1 },
+/* start-sanitize-v850eq */
 #endif
+/* end-sanitize-v850eq */
 { "sld.w",     one (0x0500),           one (0x0781),           {D8_6, EP,   R2},       1 },
 { "sst.b",     one (0x0380),           one (0x0780),           {R2,   D7,   EP},       2 },
 { "sst.h",     one (0x0480),           one (0x0780),           {R2,   D8_7, EP},       2 },
@@ -640,7 +648,7 @@ const struct v850_opcode v850_opcodes[] =
 /* end-sanitize-v850e */
 { "mov",        OP  (0x00),            OP_MASK,                {R1, R2_NOTR0},         0 },
 { "movea",     OP  (0x31),             OP_MASK,                {I16, R1, R2_NOTR0},    0 },
-{ "movhi",     OP  (0x32),             OP_MASK,                {I16, R1, R2_NOTR0},    0 },
+{ "movhi",     OP  (0x32),             OP_MASK,                {I16U, R1, R2_NOTR0},   0 },
 { "add",       OP  (0x0e),             OP_MASK,                IF1,                    0 },
 { "add",       OP  (0x12),             OP_MASK,                IF2,                    0 },
 { "addi",      OP  (0x30),             OP_MASK,                IF6,                    0 },
This page took 0.027351 seconds and 4 git commands to generate.