From 1ffd7d025c9048989604e67b9296485bf564b634 Mon Sep 17 00:00:00 2001 From: Dave Brolley Date: Tue, 7 Nov 2000 17:20:25 +0000 Subject: [PATCH] 2000-11-07 Dave Brolley * cgen-dis.in (print_insn): All insns which can fit into insn_value must be loaded there in their entirety. --- opcodes/ChangeLog | 5 +++++ opcodes/cgen-dis.in | 12 ++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index fbf3062479..02affa86c8 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,8 @@ +2000-11-07 Dave Brolley + + * 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 * sparc-dis.c (v9a_asr_reg_names): Add v9b ASRs. diff --git a/opcodes/cgen-dis.in b/opcodes/cgen-dis.in index 9fee32af2d..22cef1f0fe 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;