OSDN Git Service

gas/
authordgutson <dgutson>
Wed, 24 Feb 2010 03:04:11 +0000 (03:04 +0000)
committerdgutson <dgutson>
Wed, 24 Feb 2010 03:04:11 +0000 (03:04 +0000)
    * 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.

gas/ChangeLog
gas/config/tc-arm.c
gas/testsuite/ChangeLog
gas/testsuite/gas/arm/depr-swp.d [new file with mode: 0644]
gas/testsuite/gas/arm/depr-swp.l [new file with mode: 0644]
gas/testsuite/gas/arm/depr-swp.s [new file with mode: 0644]

index a2807f6..f35eb3a 100644 (file)
@@ -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
index b3096c5..7ef0f44 100644 (file)
@@ -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;
index 301eea3..7a9b538 100644 (file)
@@ -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 (file)
index 0000000..40add70
--- /dev/null
@@ -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 (file)
index 0000000..e5052a7
--- /dev/null
@@ -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 (file)
index 0000000..e5c1df3
--- /dev/null
@@ -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]