about summary refs log tree commit diff
path: root/sysdeps/s390
diff options
context:
space:
mode:
authorTorvald Riegel <triegel@redhat.com>2014-10-18 01:02:59 +0200
committerTorvald Riegel <triegel@redhat.com>2014-11-20 11:57:38 +0100
commit1ea339b69725cb2f30b5a84cb7ca96111c9a637b (patch)
tree130609da9190b04afb366f3a506d3415ea2f982f /sysdeps/s390
parentd960211ff52a6ab632eace2f905c4898f187df9e (diff)
downloadglibc-1ea339b69725cb2f30b5a84cb7ca96111c9a637b.tar.gz
glibc-1ea339b69725cb2f30b5a84cb7ca96111c9a637b.tar.xz
glibc-1ea339b69725cb2f30b5a84cb7ca96111c9a637b.zip
Add arch-specific configuration for C11 atomics support.
This sets __HAVE_64B_ATOMICS if provided.  It also sets
USE_ATOMIC_COMPILER_BUILTINS to true if the existing atomic ops use the
__atomic* builtins (aarch64, mips partially) or if this has been
tested (x86_64); otherwise, this is set to false so that C11 atomics will
be based on the existing atomic operations.
Diffstat (limited to 'sysdeps/s390')
-rw-r--r--sysdeps/s390/bits/atomic.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/sysdeps/s390/bits/atomic.h b/sysdeps/s390/bits/atomic.h
index 6824165779..b809b5efaa 100644
--- a/sysdeps/s390/bits/atomic.h
+++ b/sysdeps/s390/bits/atomic.h
@@ -43,6 +43,8 @@ typedef uintptr_t uatomicptr_t;
 typedef intmax_t atomic_max_t;
 typedef uintmax_t uatomic_max_t;
 
+#define USE_ATOMIC_COMPILER_BUILTINS 0
+
 
 #define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
   (abort (), (__typeof (*mem)) 0)
@@ -59,6 +61,7 @@ typedef uintmax_t uatomic_max_t;
      __archold; })
 
 #ifdef __s390x__
+# define __HAVE_64B_ATOMICS 1
 # define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
   ({ __typeof (mem) __archmem = (mem);					      \
      __typeof (*mem) __archold = (oldval);				      \
@@ -67,6 +70,7 @@ typedef uintmax_t uatomic_max_t;
 		       : "d" ((long) (newval)), "m" (*__archmem) : "cc", "memory" );    \
      __archold; })
 #else
+# define __HAVE_64B_ATOMICS 0
 /* For 31 bit we do not really need 64-bit compare-and-exchange. We can
    implement them by use of the csd instruction. The straightforward
    implementation causes warnings so we skip the definition for now.  */