summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2011-03-29 05:54:41 +0000
committerMike Frysinger <vapier@gentoo.org>2011-03-29 05:54:41 +0000
commitfc99ebdc2b470b31622d9efc28fca6f03945532c (patch)
treebb3bba14326204194606831a8d7f24e5233bd8e5
parent3823a07437e70105c9a11fbddddb8273e1b8a858 (diff)
downloadbinutils-fc99ebdc2b470b31622d9efc28fca6f03945532c.tar.gz
binutils-fc99ebdc2b470b31622d9efc28fca6f03945532c.tar.bz2
binutils-fc99ebdc2b470b31622d9efc28fca6f03945532c.zip
gas: blackfin: gas: blackfin: reject invalid BYTEUNPACK insns
The destination registers must be different with BYTEUNPACK insns, otherwise the hardware throws up an exception. So reject them. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/bfin-parse.y2
-rw-r--r--gas/testsuite/ChangeLog5
-rw-r--r--gas/testsuite/gas/bfin/expected_errors.l1
-rw-r--r--gas/testsuite/gas/bfin/expected_errors.s1
5 files changed, 14 insertions, 0 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 5ae246e5eca..7c5b7054bf8 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,5 +1,10 @@
2011-03-29 Mike Frysinger <vapier@gentoo.org>
+ * config/bfin-parse.y (BYTEUNPACK): Return yyerror when dest
+ reg $2 is the same as dest reg $4.
+
+2011-03-29 Mike Frysinger <vapier@gentoo.org>
+
* config/bfin-parse.y (BYTEOP16M): Return yyerror when dest
reg $2 is the same as dest reg $4.
diff --git a/gas/config/bfin-parse.y b/gas/config/bfin-parse.y
index 7961e2e031f..797664a5015 100644
--- a/gas/config/bfin-parse.y
+++ b/gas/config/bfin-parse.y
@@ -866,6 +866,8 @@ asm_1:
{
if (!IS_DREG ($2) || !IS_DREG ($4))
return yyerror ("Dregs expected");
+ else if (REG_SAME ($2, $4))
+ return yyerror ("Illegal dest register combination");
else if (!valid_dreg_pair (&$8, $10))
return yyerror ("Bad dreg pair");
else
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 20aeb3fbb86..2101e9fc3da 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2011-03-29 Mike Frysinger <vapier@gentoo.org>
+ * gas/bfin/expected_errors.s: Add invalid BYTEUNPACK insn tests.
+ * gas/bfin/expected_errors.l: Add new error messages.
+
+2011-03-29 Mike Frysinger <vapier@gentoo.org>
+
* gas/bfin/expected_errors.s: Add invalid BYTEOP16M insn tests.
* gas/bfin/expected_errors.l: Add new error messages.
diff --git a/gas/testsuite/gas/bfin/expected_errors.l b/gas/testsuite/gas/bfin/expected_errors.l
index 1c12e65f10d..40a90437c9f 100644
--- a/gas/testsuite/gas/bfin/expected_errors.l
+++ b/gas/testsuite/gas/bfin/expected_errors.l
@@ -105,3 +105,4 @@
.*:134: Error: Illegal dest register combination.
.*:135: Error: Illegal dest register combination.
.*:136: Error: Illegal dest register combination.
+.*:137: Error: Illegal dest register combination.
diff --git a/gas/testsuite/gas/bfin/expected_errors.s b/gas/testsuite/gas/bfin/expected_errors.s
index a671a2cd66a..6ff14a68b50 100644
--- a/gas/testsuite/gas/bfin/expected_errors.s
+++ b/gas/testsuite/gas/bfin/expected_errors.s
@@ -134,3 +134,4 @@
(R7, R7) = BYTEOP16P (R1:0, R3:2);
(R1, R1) = BYTEOP16M (R1:0, R3:2);
(R4, R4) = BYTEOP16M (R1:0, R3:2);
+ (R5, R5) = BYTEUNPACK R3:2;