summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/testsuite/ChangeLog6
-rw-r--r--gas/testsuite/gas/aarch64/illegal.l3
-rw-r--r--gas/testsuite/gas/aarch64/illegal.s3
-rw-r--r--opcodes/ChangeLog5
-rw-r--r--opcodes/aarch64-opc.c3
5 files changed, 18 insertions, 2 deletions
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index eb39f6b2908..dd0fe7256e6 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2013-08-28 Nick Clifton <nickc@redhat.com>
+
+ * gas/aarch64/illegal.s: Add illegal constant for logical
+ operation.
+ * gas/aarch64/illegal.l: Add expected error message.
+
2013-08-23 Maciej W. Rozycki <macro@codesourcery.com>
* gas/testsuite/gas/mips/micromips-insn32.d: Adjust for delay
diff --git a/gas/testsuite/gas/aarch64/illegal.l b/gas/testsuite/gas/aarch64/illegal.l
index d7740b9e26d..e36b8fefb05 100644
--- a/gas/testsuite/gas/aarch64/illegal.l
+++ b/gas/testsuite/gas/aarch64/illegal.l
@@ -551,4 +551,5 @@
[^:]*:543: Error: .*`fmov s0,#0x11'
[^:]*:544: Error: .*`fmov s0,#0xC0280000C1400000'
[^:]*:545: Error: .*`fmov d0,#0xC02f800000000000'
-[^:]*:550: Error: .*
+[^:]*:550: Error: .*`ands w0,w24,#0xffeefffffffffffd'
+[^:]*:553: Error: .*
diff --git a/gas/testsuite/gas/aarch64/illegal.s b/gas/testsuite/gas/aarch64/illegal.s
index d2bc08a9d19..a46946e8926 100644
--- a/gas/testsuite/gas/aarch64/illegal.s
+++ b/gas/testsuite/gas/aarch64/illegal.s
@@ -547,4 +547,7 @@
// No 16-byte relocation
ldr q0, =one_label
+ ands w0, w24, #0xffeefffffffffffd
+
one_label:
+
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index ce6aebecf18..6966b95c272 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,8 @@
+2013-08-28 Nick Clifton <nickc@redhat.com>
+
+ * aarch64-opc.c (aarch64_logical_immediate_p): Return FALSE if the
+ immediate is not suitable for the 32-bit ABI.
+
2013-08-23 Maciej W. Rozycki <macro@codesourcery.com>
* micromips-opc.c (micromips_opcodes): Use RD_4 for "alnv.ps",
diff --git a/opcodes/aarch64-opc.c b/opcodes/aarch64-opc.c
index 74f2826035f..f32ee5ec2f2 100644
--- a/opcodes/aarch64-opc.c
+++ b/opcodes/aarch64-opc.c
@@ -1063,7 +1063,8 @@ aarch64_logical_immediate_p (uint64_t value, int is32, aarch64_insn *encoding)
/* Allow all zeros or all ones in top 32-bits, so that
constant expressions like ~1 are permitted. */
if (value >> 32 != 0 && value >> 32 != 0xffffffff)
- return 0xffffffff;
+ return FALSE;
+
/* Replicate the 32 lower bits to the 32 upper bits. */
value &= 0xffffffff;
value |= value << 32;