summaryrefslogtreecommitdiff
path: root/opcodes
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2011-02-13 18:54:49 +0000
committerMike Frysinger <vapier@gentoo.org>2011-02-13 18:54:49 +0000
commit4db663940931db273ab59affa3d2af4cfe1e29e7 (patch)
tree94981e624e82a953aee0da9e1a9d62cd442527aa /opcodes
parent36f446111a0aba2bbd622ea73a2b5a9a363e5f5c (diff)
downloadbinutils-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/ChangeLog5
-rw-r--r--opcodes/bfin-dis.c4
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);
}