summaryrefslogtreecommitdiff
path: root/opcodes/cgen-dis.in
diff options
context:
space:
mode:
authorDave Brolley <brolley@redhat.com>2000-11-07 17:20:25 +0000
committerDave Brolley <brolley@redhat.com>2000-11-07 17:20:25 +0000
commit1ffd7d025c9048989604e67b9296485bf564b634 (patch)
treef3c7cf6999d4e81928b6f643656413f952c0221f /opcodes/cgen-dis.in
parentd562d2fbf0e05c10019ac0f8bd76677a9284a76a (diff)
downloadbinutils-1ffd7d025c9048989604e67b9296485bf564b634.tar.gz
binutils-1ffd7d025c9048989604e67b9296485bf564b634.tar.bz2
binutils-1ffd7d025c9048989604e67b9296485bf564b634.zip
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.
Diffstat (limited to 'opcodes/cgen-dis.in')
-rw-r--r--opcodes/cgen-dis.in12
1 files changed, 6 insertions, 6 deletions
diff --git a/opcodes/cgen-dis.in b/opcodes/cgen-dis.in
index 9fee32af2d5..22cef1f0fee 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;