diff options
author | Mike Frysinger <vapier@gentoo.org> | 2011-02-13 18:54:49 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2011-02-13 18:54:49 +0000 |
commit | 4db663940931db273ab59affa3d2af4cfe1e29e7 (patch) | |
tree | 94981e624e82a953aee0da9e1a9d62cd442527aa /opcodes | |
parent | 36f446111a0aba2bbd622ea73a2b5a9a363e5f5c (diff) | |
download | binutils-4db663940931db273ab59affa3d2af4cfe1e29e7.tar.gz binutils-4db663940931db273ab59affa3d2af4cfe1e29e7.tar.bz2 binutils-4db663940931db273ab59affa3d2af4cfe1e29e7.zip |
opcodes: blackfin: fix decoding of dsp mult insns
When assigning to a register half, the mac0 part of the mult insn
was not decoding properly. It would always show a full dreg instead
of the dreg low half.
Once we fix the disassembler, we have to update a few of the gas
tests as their previous expected output was incorrect.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'opcodes')
-rw-r--r-- | opcodes/ChangeLog | 5 | ||||
-rw-r--r-- | opcodes/bfin-dis.c | 4 |
2 files changed, 7 insertions, 2 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index aaafac47f6d..f0671504e71 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,5 +1,10 @@ 2011-02-13 Mike Frysinger <vapier@gentoo.org> + * bfin-dis.c (decode_dsp32mult_0): Add 1 to dst for mac1. Output + dregs only when P is set, and dregs_lo otherwise. + +2011-02-13 Mike Frysinger <vapier@gentoo.org> + * bfin-dis.c (decode_dsp32alu_0): Delete BYTEOP2M code. 2011-02-12 Mike Frysinger <vapier@gentoo.org> diff --git a/opcodes/bfin-dis.c b/opcodes/bfin-dis.c index e6901dcaf0b..e7646c9ea9e 100644 --- a/opcodes/bfin-dis.c +++ b/opcodes/bfin-dis.c @@ -3084,7 +3084,7 @@ decode_dsp32mult_0 (TIword iw0, TIword iw1, disassemble_info *outf) if (w1) { - OUTS (outf, P ? dregs (dst | 1) : dregs_hi (dst)); + OUTS (outf, P ? dregs (dst + 1) : dregs_hi (dst)); OUTS (outf, " = "); decode_multfunc (h01, h11, src0, src1, outf); @@ -3099,7 +3099,7 @@ decode_dsp32mult_0 (TIword iw0, TIword iw1, disassemble_info *outf) if (w0) { - OUTS (outf, dregs (dst)); + OUTS (outf, P ? dregs (dst) : dregs_lo (dst)); OUTS (outf, " = "); decode_multfunc (h00, h10, src0, src1, outf); } |