2000-11-07 Dave Brolley <brolley@redhat.com>
authorDave Brolley <brolley@redhat.com>
Tue, 7 Nov 2000 17:20:25 +0000 (17:20 +0000)
committerDave Brolley <brolley@redhat.com>
Tue, 7 Nov 2000 17:20:25 +0000 (17:20 +0000)
* cgen-dis.in (print_insn): All insns which can fit into insn_value
must be loaded there in their entirety.

opcodes/ChangeLog
opcodes/cgen-dis.in

index fbf3062..02affa8 100644 (file)
@@ -1,3 +1,8 @@
+2000-11-07  Dave Brolley  <brolley@redhat.com>
+
+       * cgen-dis.in (print_insn): All insns which can fit into insn_value
+       must be loaded there in their entirety.
+
 2000-10-20  Jakub Jelinek  <jakub@redhat.com>
 
        * sparc-dis.c (v9a_asr_reg_names): Add v9b ASRs.
index 9fee32a..22cef1f 100644 (file)
@@ -281,9 +281,10 @@ print_insn (cd, pc, info, buf, buflen)
             machine insn and extracts the fields.  The second pass prints
             them.  */
 
-#if CGEN_INT_INSN_P
-         /* Make sure the entire insn is loaded into insn_value.  */
-         if (CGEN_INSN_BITSIZE (insn) > cd->base_insn_bitsize)
+         /* Make sure the entire insn is loaded into insn_value, if it
+            can fit.  */
+         if (CGEN_INSN_BITSIZE (insn) > cd->base_insn_bitsize &&
+             (CGEN_INSN_BITSIZE (insn) / 8) <= sizeof (unsigned long))
            {
              unsigned long full_insn_value;
              int rc = read_insn (cd, pc, info, buf,
@@ -295,10 +296,9 @@ print_insn (cd, pc, info, buf, buflen)
                (cd, insn, &ex_info, full_insn_value, &fields, pc);
            }
          else
-#endif
+           length = CGEN_EXTRACT_FN (cd, insn)
+             (cd, insn, &ex_info, insn_value, &fields, pc);
 
-         length = CGEN_EXTRACT_FN (cd, insn)
-           (cd, insn, &ex_info, insn_value, &fields, pc);
          /* length < 0 -> error */
          if (length < 0)
            return length;