aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--opcodes/ChangeLog5
-rw-r--r--opcodes/cgen-dis.in12
2 files changed, 11 insertions, 6 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index fbf3062..02affa8 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -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.
diff --git a/opcodes/cgen-dis.in b/opcodes/cgen-dis.in
index 9fee32a..22cef1f 100644
--- a/opcodes/cgen-dis.in
+++ b/opcodes/cgen-dis.in
@@ -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;