* sysdeps/s390/bits/atomic.h (__arch_compare_and_exchange_val_32_acq,
authorJakub Jelinek <jakub@redhat.com>
Fri, 7 Nov 2008 15:18:47 +0000 (15:18 +0000)
committerJakub Jelinek <jakub@redhat.com>
Fri, 7 Nov 2008 15:18:47 +0000 (15:18 +0000)
__arch_compare_and_exchange_val_64_acq): Add "memory" clobber.
2008-11-03  Michael Matz  <matz@suse.de>

* sysdeps/s390/bits/atomic.h (__arch_compare_and_exchange_val_32_acq,
__arch_compare_and_exchange_val_64_acq): Add "memory" clobber.

ChangeLog
sysdeps/s390/bits/atomic.h

index d4c45e1..3f093d3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-11-03  Michael Matz  <matz@suse.de>
+
+       * sysdeps/s390/bits/atomic.h (__arch_compare_and_exchange_val_32_acq,
+       __arch_compare_and_exchange_val_64_acq): Add "memory" clobber.
+
 2008-11-07  Jakub Jelinek  <jakub@redhat.com>
 
        * include/stdio.h (__builtin_fwrite, __builtin_fwrite_unlocked):
index aa00473..95d0390 100644 (file)
@@ -56,7 +56,7 @@ typedef uintmax_t uatomic_max_t;
      __typeof (*mem) __archold = (oldval);                                   \
      __asm __volatile ("cs %0,%2,%1"                                         \
                       : "+d" (__archold), "=Q" (*__archmem)                  \
-                      : "d" (newval), "m" (*__archmem) : "cc" );             \
+                      : "d" (newval), "m" (*__archmem) : "cc", "memory" );           \
      __archold; })
 
 #ifdef __s390x__
@@ -65,7 +65,7 @@ typedef uintmax_t uatomic_max_t;
      __typeof (*mem) __archold = (oldval);                                   \
      __asm __volatile ("csg %0,%2,%1"                                        \
                       : "+d" (__archold), "=Q" (*__archmem)                  \
-                      : "d" ((long) (newval)), "m" (*__archmem) : "cc" );    \
+                      : "d" ((long) (newval)), "m" (*__archmem) : "cc", "memory" );    \
      __archold; })
 #else
 /* For 31 bit we do not really need 64-bit compare-and-exchange. We can