aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Gutson <dgutson@codesourcery.com>2010-02-23 18:04:14 +0000
committerDaniel Gutson <dgutson@codesourcery.com>2010-02-23 18:04:14 +0000
commit56adecf405963c4b283d0b8297236525ab5f374a (patch)
tree7331f2a1e0dd5e54a7de08d6ddf27b7d41a78164
parentca419a6f33e27d59324ba74c4655e551a381aad5 (diff)
downloadgdb-56adecf405963c4b283d0b8297236525ab5f374a.zip
gdb-56adecf405963c4b283d0b8297236525ab5f374a.tar.gz
gdb-56adecf405963c4b283d0b8297236525ab5f374a.tar.bz2
gas/
* config/tc-arm.c (do_rd_rm_rn): Added warning. gas/testsuite/ * gas/arm/depr-swp.d: New test case. * gas/arm/depr-swp.s: New file. * gas/arm/depr-swp.l: New file.
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/tc-arm.c12
-rw-r--r--gas/testsuite/ChangeLog6
-rw-r--r--gas/testsuite/gas/arm/depr-swp.d3
-rw-r--r--gas/testsuite/gas/arm/depr-swp.l3
-rw-r--r--gas/testsuite/gas/arm/depr-swp.s7
6 files changed, 34 insertions, 2 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index a2807f6..f35eb3a 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2010-02-23 Daniel Gutson <dgutson@codesourcery.com>
+
+ * config/tc-arm.c (do_rd_rm_rn): Added warning
+ for obsolete insns.
+
2010-02-23 Andrew Zabolotny <anpaza@mail.ru>
PR binutils/11297
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index b3096c5..7ef0f44 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -6970,8 +6970,16 @@ do_rd_rm_rn (void)
unsigned Rn = inst.operands[2].reg;
/* Enforce restrictions on SWP instruction. */
if ((inst.instruction & 0x0fbfffff) == 0x01000090)
- constraint (Rn == inst.operands[0].reg || Rn == inst.operands[1].reg,
- _("Rn must not overlap other operands"));
+ {
+ constraint (Rn == inst.operands[0].reg || Rn == inst.operands[1].reg,
+ _("Rn must not overlap other operands"));
+
+ /* SWP{b} is deprecated for ARMv6* and ARMv7. */
+ if (warn_on_deprecated
+ && ARM_CPU_HAS_FEATURE (selected_cpu, arm_ext_v6))
+ as_warn (_("swp{b} use is deprecated for this architecture"));
+
+ }
inst.instruction |= inst.operands[0].reg << 12;
inst.instruction |= inst.operands[1].reg;
inst.instruction |= Rn << 16;
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 301eea3..7a9b538 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2010-02-23 Daniel Gutson <dgutson@codesourcery.com>
+
+ * gas/arm/depr-swp.d: New test case.
+ * gas/arm/depr-swp.s: New file.
+ * gas/arm/depr-swp.l: New file.
+
2010-02-23 Nick Clifton <nickc@redhat.com>
* gas/arm/thumb2_bcond.d: Allow for varying number of nops at the
diff --git a/gas/testsuite/gas/arm/depr-swp.d b/gas/testsuite/gas/arm/depr-swp.d
new file mode 100644
index 0000000..40add70
--- /dev/null
+++ b/gas/testsuite/gas/arm/depr-swp.d
@@ -0,0 +1,3 @@
+#name: Deprecated swp{b} instructions
+#source: depr-swp.s
+#error-output: depr-swp.l
diff --git a/gas/testsuite/gas/arm/depr-swp.l b/gas/testsuite/gas/arm/depr-swp.l
new file mode 100644
index 0000000..e5052a7
--- /dev/null
+++ b/gas/testsuite/gas/arm/depr-swp.l
@@ -0,0 +1,3 @@
+[^:]*: Assembler messages:
+[^:]*:5: Warning: swp{b} use is deprecated for this architecture
+[^:]*:7: Warning: swp{b} use is deprecated for this architecture
diff --git a/gas/testsuite/gas/arm/depr-swp.s b/gas/testsuite/gas/arm/depr-swp.s
new file mode 100644
index 0000000..e5c1df3
--- /dev/null
+++ b/gas/testsuite/gas/arm/depr-swp.s
@@ -0,0 +1,7 @@
+.syntax unified
+.arch armv4
+swp r0, r1, [r2]
+.arch armv6
+swp r0, r1, [r2]
+.arch armv7-a
+swp r0, r1, [r2]