On 03/06/12 09:55, Andreas Schwab wrote:
> Richard Henderson <r...@redhat.com> writes:
> 
>> On 03/06/12 02:13, Andreas Schwab wrote:
>>> Ralf Corsepius <ralf.corsep...@rtems.org> writes:
>>>
>>>> * Incompatiblible/insufficient binutils (I am using binutils-2.22)?
>>>> * Some as/ld-flags getting lost/improperly propagated during
>>>> assembly/linking?
>>>> * Bad/incompatible inline-asm hard-coded somewhere?
>>>
>>> TAS needs at least ISA_B, ie. at least CFV4.
>>
>> So... the correct test is what...
>>
>> #define ISA_HAS_TAS  (!TARGET_COLDFIRE || TARGET_ISAB || TARGET_ISAC)
> 
> Yes, that looks correct.

Thanks.

Ralf, I've committed the following to mainline.  Please try your rtems
testing again, and if that works I'll push the patch to 4.7 branch.


r~
        * config/m68k/m68k.h (ISA_HAS_TAS): New.
        * config/m68k/sync.md (atomic_test_and_set): Use it.
        (atomic_test_and_set_1): Likewise.


diff --git a/gcc/config/m68k/m68k.h b/gcc/config/m68k/m68k.h
index dbb9756..42d3779 100644
--- a/gcc/config/m68k/m68k.h
+++ b/gcc/config/m68k/m68k.h
@@ -249,6 +249,7 @@ along with GCC; see the file COPYING3.  If not see
 /* Some instructions are common to more than one ISA.  */
 #define ISA_HAS_MVS_MVZ        (TARGET_ISAB || TARGET_ISAC)
 #define ISA_HAS_FF1    (TARGET_ISAAPLUS || TARGET_ISAC)
+#define ISA_HAS_TAS    (!TARGET_COLDFIRE || TARGET_ISAB || TARGET_ISAC)
 
 #define TUNE_68000     (m68k_tune == u68000)
 #define TUNE_68010     (m68k_tune == u68010)
diff --git a/gcc/config/m68k/sync.md b/gcc/config/m68k/sync.md
index 6c840f5..d5cab79 100644
--- a/gcc/config/m68k/sync.md
+++ b/gcc/config/m68k/sync.md
@@ -60,7 +60,7 @@
   [(match_operand:QI 0 "register_operand" "")          ;; bool success output
    (match_operand:QI 1 "memory_operand" "")            ;; memory
    (match_operand:SI 2 "const_int_operand" "")]                ;; model
-  ""
+  "ISA_HAS_TAS"
 {
   rtx t = gen_reg_rtx (QImode);
   emit_insn (gen_atomic_test_and_set_1 (t, operands[1]));
@@ -77,5 +77,5 @@
          UNSPECV_TAS_1))
    (set (match_dup 1)
        (unspec_volatile:QI [(match_dup 1)] UNSPECV_TAS_2))]
-  ""
+  "ISA_HAS_TAS"
   "tas %1\;sne %0")

Reply via email to