aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2010-09-22 21:53:14 +0000
committerMike Frysinger <vapier@gentoo.org>2010-09-22 21:53:14 +0000
commit775f1cf0c29d662e29905b5b06f0dc079ba10e5a (patch)
treefdb9d552936eb4129564847c847fd4098aea5696
parent0b7691fd6ec26dfb326e9c35cf4c5b157d3998df (diff)
downloadgdb-775f1cf0c29d662e29905b5b06f0dc079ba10e5a.zip
gdb-775f1cf0c29d662e29905b5b06f0dc079ba10e5a.tar.gz
gdb-775f1cf0c29d662e29905b5b06f0dc079ba10e5a.tar.bz2
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>
-rw-r--r--opcodes/ChangeLog4
-rw-r--r--opcodes/bfin-dis.c3
2 files changed, 7 insertions, 0 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 3067e3c..f11938c 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,7 @@
+2010-09-22 Mike Frysinger <vapier@gentoo.org>
+
+ * bfin-dis.c (decode_PushPopMultiple_0): Return 0 when pr > 5.
+
2010-09-22 Robin Getz <robin.getz@analog.com>
* bfin-dis.c (decode_dsp32shiftimm_0): Add missing "S" flag.
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:");