This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[PATCH] opcodes: blackfin: mark push/pop insns with a P6/P7 range as illegal
- From: Mike Frysinger <vapier at gentoo dot org>
- To: binutils at sourceware dot org
- Date: Tue, 21 Sep 2010 04:56:14 -0400
- Subject: [PATCH] opcodes: blackfin: mark push/pop insns with a P6/P7 range as illegal
The push/pop multiple insn has a 3 bit field for the P register range,
but only values of 0...5 are valid (P0 - P5). There is no such P6 or
P7 register, so mark these insns as illegal.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2010-09-21 Mike Frysinger <vapier@gentoo.org>
* bfin-dis.c (decode_PushPopMultiple_0): Return 0 when pr > 5.
---
opcodes/bfin-dis.c | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/opcodes/bfin-dis.c b/opcodes/bfin-dis.c
index a510db1..0ce0ecf 100644
--- a/opcodes/bfin-dis.c
+++ b/opcodes/bfin-dis.c
@@ -936,6 +936,9 @@ decode_PushPopMultiple_0 (TIword iw0, disassemble_info *outf)
int dr = ((iw0 >> PushPopMultiple_dr_bits) & PushPopMultiple_dr_mask);
int pr = ((iw0 >> PushPopMultiple_pr_bits) & PushPopMultiple_pr_mask);
+ if (pr > 5)
+ return 0;
+
if (W == 1 && d == 1 && p == 1)
{
OUTS (outf, "[--SP] = (R7:");
--
1.7.2