about summary refs log tree commit diff
path: root/sysdeps
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/aarch64/atomic-machine.h (renamed from sysdeps/aarch64/bits/atomic.h)4
-rw-r--r--sysdeps/alpha/atomic-machine.h (renamed from sysdeps/alpha/bits/atomic.h)0
-rw-r--r--sysdeps/arm/atomic-machine.h (renamed from sysdeps/arm/bits/atomic.h)4
-rw-r--r--sysdeps/generic/atomic-machine.h42
-rw-r--r--sysdeps/i386/atomic-machine.h (renamed from sysdeps/i386/bits/atomic.h)0
-rw-r--r--sysdeps/ia64/atomic-machine.h (renamed from sysdeps/ia64/bits/atomic.h)0
-rw-r--r--sysdeps/m68k/coldfire/atomic-machine.h (renamed from sysdeps/m68k/coldfire/bits/atomic.h)4
-rw-r--r--sysdeps/m68k/m680x0/m68020/atomic-machine.h (renamed from sysdeps/m68k/m680x0/m68020/bits/atomic.h)0
-rw-r--r--sysdeps/microblaze/atomic-machine.h (renamed from sysdeps/microblaze/bits/atomic.h)0
-rw-r--r--sysdeps/mips/atomic-machine.h (renamed from sysdeps/mips/bits/atomic.h)6
-rw-r--r--sysdeps/powerpc/atomic-machine.h (renamed from sysdeps/powerpc/bits/atomic.h)6
-rw-r--r--sysdeps/powerpc/powerpc32/atomic-machine.h (renamed from sysdeps/powerpc/powerpc32/bits/atomic.h)4
-rw-r--r--sysdeps/powerpc/powerpc64/atomic-machine.h (renamed from sysdeps/powerpc/powerpc64/bits/atomic.h)2
-rw-r--r--sysdeps/s390/atomic-machine.h (renamed from sysdeps/s390/bits/atomic.h)0
-rw-r--r--sysdeps/sparc/sparc32/atomic-machine.h (renamed from sysdeps/sparc/sparc32/bits/atomic.h)6
-rw-r--r--sysdeps/sparc/sparc32/sparcv9/atomic-machine.h (renamed from sysdeps/sparc/sparc32/sparcv9/bits/atomic.h)0
-rw-r--r--sysdeps/sparc/sparc64/atomic-machine.h (renamed from sysdeps/sparc/sparc64/bits/atomic.h)0
-rw-r--r--sysdeps/tile/atomic-machine.h (renamed from sysdeps/tile/bits/atomic.h)0
-rw-r--r--sysdeps/tile/tilegx/atomic-machine.h (renamed from sysdeps/tile/tilegx/bits/atomic.h)8
-rw-r--r--sysdeps/tile/tilepro/atomic-machine.h (renamed from sysdeps/tile/tilepro/bits/atomic.h)8
-rw-r--r--sysdeps/unix/sysv/linux/arm/atomic-machine.h (renamed from sysdeps/unix/sysv/linux/arm/bits/atomic.h)2
-rw-r--r--sysdeps/unix/sysv/linux/hppa/atomic-machine.h (renamed from sysdeps/unix/sysv/linux/hppa/bits/atomic.h)6
-rw-r--r--sysdeps/unix/sysv/linux/m68k/coldfire/atomic-machine.h (renamed from sysdeps/unix/sysv/linux/m68k/coldfire/bits/atomic.h)4
-rw-r--r--sysdeps/unix/sysv/linux/nios2/atomic-machine.h (renamed from sysdeps/unix/sysv/linux/nios2/bits/atomic.h)6
-rw-r--r--sysdeps/unix/sysv/linux/sh/atomic-machine.h (renamed from sysdeps/unix/sysv/linux/sh/bits/atomic.h)0
-rw-r--r--sysdeps/x86_64/atomic-machine.h (renamed from sysdeps/x86_64/bits/atomic.h)0
26 files changed, 77 insertions, 35 deletions
diff --git a/sysdeps/aarch64/bits/atomic.h b/sysdeps/aarch64/atomic-machine.h
index fdd5eaa517..3758dd7b7e 100644
--- a/sysdeps/aarch64/bits/atomic.h
+++ b/sysdeps/aarch64/atomic-machine.h
@@ -16,8 +16,8 @@
    License along with the GNU C Library.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
-#ifndef _AARCH64_BITS_ATOMIC_H
-#define _AARCH64_BITS_ATOMIC_H	1
+#ifndef _AARCH64_ATOMIC_MACHINE_H
+#define _AARCH64_ATOMIC_MACHINE_H	1
 
 #include <stdint.h>
 
diff --git a/sysdeps/alpha/bits/atomic.h b/sysdeps/alpha/atomic-machine.h
index 7adb162c35..7adb162c35 100644
--- a/sysdeps/alpha/bits/atomic.h
+++ b/sysdeps/alpha/atomic-machine.h
diff --git a/sysdeps/arm/bits/atomic.h b/sysdeps/arm/atomic-machine.h
index 772a354d44..2a89a73f5b 100644
--- a/sysdeps/arm/bits/atomic.h
+++ b/sysdeps/arm/atomic-machine.h
@@ -44,7 +44,7 @@ void __arm_link_error (void);
 # define atomic_full_barrier() __arm_assisted_full_barrier ()
 #endif
 
-/* An OS-specific bits/atomic.h file will define this macro if
+/* An OS-specific atomic-machine.h file will define this macro if
    the OS can provide something.  If not, we'll fail to build
    with a compiler that doesn't supply the operation.  */
 #ifndef __arm_assisted_full_barrier
@@ -153,7 +153,7 @@ void __arm_link_error (void);
   ({ __arm_link_error (); oldval; })
 #endif
 
-/* An OS-specific bits/atomic.h file will define this macro if
+/* An OS-specific atomic-machine.h file will define this macro if
    the OS can provide something.  If not, we'll fail to build
    with a compiler that doesn't supply the operation.  */
 #ifndef __arm_assisted_compare_and_exchange_val_32_acq
diff --git a/sysdeps/generic/atomic-machine.h b/sysdeps/generic/atomic-machine.h
new file mode 100644
index 0000000000..c51f3ef5b0
--- /dev/null
+++ b/sysdeps/generic/atomic-machine.h
@@ -0,0 +1,42 @@
+/* Copyright (C) 2003-2015 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _ATOMIC_MACHINE_H
+#define _ATOMIC_MACHINE_H	1
+
+/* We have by default no support for atomic operations.  So define
+   them non-atomic.  If this is a problem somebody will have to come
+   up with real definitions.  */
+
+/* The only basic operation needed is compare and exchange.  */
+#define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
+  ({ __typeof (mem) __gmemp = (mem);				      \
+     __typeof (*mem) __gret = *__gmemp;				      \
+     __typeof (*mem) __gnewval = (newval);			      \
+								      \
+     if (__gret == (oldval))					      \
+       *__gmemp = __gnewval;					      \
+     __gret; })
+
+#define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \
+  ({ __typeof (mem) __gmemp = (mem);				      \
+     __typeof (*mem) __gnewval = (newval);			      \
+								      \
+     *__gmemp == (oldval) ? (*__gmemp = __gnewval, 0) : 1; })
+
+#endif	/* atomic-machine.h */
diff --git a/sysdeps/i386/bits/atomic.h b/sysdeps/i386/atomic-machine.h
index 59f3d34871..59f3d34871 100644
--- a/sysdeps/i386/bits/atomic.h
+++ b/sysdeps/i386/atomic-machine.h
diff --git a/sysdeps/ia64/bits/atomic.h b/sysdeps/ia64/atomic-machine.h
index 4c2b54094c..4c2b54094c 100644
--- a/sysdeps/ia64/bits/atomic.h
+++ b/sysdeps/ia64/atomic-machine.h
diff --git a/sysdeps/m68k/coldfire/bits/atomic.h b/sysdeps/m68k/coldfire/atomic-machine.h
index c09bf188ac..48899ce5ed 100644
--- a/sysdeps/m68k/coldfire/bits/atomic.h
+++ b/sysdeps/m68k/coldfire/atomic-machine.h
@@ -15,8 +15,8 @@
    License along with the GNU C Library.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
-#ifndef _BITS_ATOMIC_H
-#define _BITS_ATOMIC_H	1
+#ifndef _ATOMIC_MACHINE_H
+#define _ATOMIC_MACHINE_H	1
 
 #include <stdint.h>
 
diff --git a/sysdeps/m68k/m680x0/m68020/bits/atomic.h b/sysdeps/m68k/m680x0/m68020/atomic-machine.h
index 9a29022af9..9a29022af9 100644
--- a/sysdeps/m68k/m680x0/m68020/bits/atomic.h
+++ b/sysdeps/m68k/m680x0/m68020/atomic-machine.h
diff --git a/sysdeps/microblaze/bits/atomic.h b/sysdeps/microblaze/atomic-machine.h
index f1cbf43876..f1cbf43876 100644
--- a/sysdeps/microblaze/bits/atomic.h
+++ b/sysdeps/microblaze/atomic-machine.h
diff --git a/sysdeps/mips/bits/atomic.h b/sysdeps/mips/atomic-machine.h
index 375448957c..6db8fee1d4 100644
--- a/sysdeps/mips/bits/atomic.h
+++ b/sysdeps/mips/atomic-machine.h
@@ -16,8 +16,8 @@
    License along with the GNU C Library.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
-#ifndef _MIPS_BITS_ATOMIC_H
-#define _MIPS_BITS_ATOMIC_H 1
+#ifndef _MIPS_ATOMIC_MACHINE_H
+#define _MIPS_ATOMIC_MACHINE_H 1
 
 #include <stdint.h>
 #include <inttypes.h>
@@ -500,4 +500,4 @@ typedef uintmax_t uatomic_max_t;
 			".set pop" : : : "memory")
 #endif /* !__mips16 */
 
-#endif /* bits/atomic.h */
+#endif /* atomic-machine.h */
diff --git a/sysdeps/powerpc/bits/atomic.h b/sysdeps/powerpc/atomic-machine.h
index 8ca45ee5ee..a056eb18c4 100644
--- a/sysdeps/powerpc/bits/atomic.h
+++ b/sysdeps/powerpc/atomic-machine.h
@@ -18,11 +18,11 @@
    <http://www.gnu.org/licenses/>.  */
 
 /*
- * Never include sysdeps/powerpc/bits/atomic.h directly.
+ * Never include sysdeps/powerpc/atomic-machine.h directly.
  * Alway use include/atomic.h which will include either
- * sysdeps/powerpc/powerpc32/bits/atomic.h
+ * sysdeps/powerpc/powerpc32/atomic-machine.h
  * or
- * sysdeps/powerpc/powerpc64/bits/atomic.h
+ * sysdeps/powerpc/powerpc64/atomic-machine.h
  * as appropriate and which in turn include this file.
  */
 
diff --git a/sysdeps/powerpc/powerpc32/bits/atomic.h b/sysdeps/powerpc/powerpc32/atomic-machine.h
index 8cb0627ca9..9ff70c54d5 100644
--- a/sysdeps/powerpc/powerpc32/bits/atomic.h
+++ b/sysdeps/powerpc/powerpc32/atomic-machine.h
@@ -40,7 +40,7 @@
  * The 32-bit exchange_bool is different on powerpc64 because the subf
  * does signed 64-bit arithmetic while the lwarx is 32-bit unsigned
  * (a load word and zero (high 32) form).  So powerpc64 has a slightly
- * different version in sysdeps/powerpc/powerpc64/bits/atomic.h.
+ * different version in sysdeps/powerpc/powerpc64/atomic-machine.h.
  */
 #define __arch_compare_and_exchange_bool_32_acq(mem, newval, oldval)         \
 ({									      \
@@ -141,4 +141,4 @@
  * Include the rest of the atomic ops macros which are common to both
  * powerpc32 and powerpc64.
  */
-#include_next <bits/atomic.h>
+#include_next <atomic-machine.h>
diff --git a/sysdeps/powerpc/powerpc64/bits/atomic.h b/sysdeps/powerpc/powerpc64/atomic-machine.h
index 92a2a3df55..e1d3e9bb0d 100644
--- a/sysdeps/powerpc/powerpc64/bits/atomic.h
+++ b/sysdeps/powerpc/powerpc64/atomic-machine.h
@@ -271,4 +271,4 @@
  * Include the rest of the atomic ops macros which are common to both
  * powerpc32 and powerpc64.
  */
-#include_next <bits/atomic.h>
+#include_next <atomic-machine.h>
diff --git a/sysdeps/s390/bits/atomic.h b/sysdeps/s390/atomic-machine.h
index 16c8c54b94..16c8c54b94 100644
--- a/sysdeps/s390/bits/atomic.h
+++ b/sysdeps/s390/atomic-machine.h
diff --git a/sysdeps/sparc/sparc32/bits/atomic.h b/sysdeps/sparc/sparc32/atomic-machine.h
index 4242ba831a..0fb1111635 100644
--- a/sysdeps/sparc/sparc32/bits/atomic.h
+++ b/sysdeps/sparc/sparc32/atomic-machine.h
@@ -17,8 +17,8 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#ifndef _BITS_ATOMIC_H
-#define _BITS_ATOMIC_H	1
+#ifndef _ATOMIC_MACHINE_H
+#define _ATOMIC_MACHINE_H	1
 
 #include <stdint.h>
 
@@ -357,4 +357,4 @@ extern uint64_t _dl_hwcap __attribute__((weak));
 
 #include <sysdep.h>
 
-#endif	/* bits/atomic.h */
+#endif	/* atomic-machine.h */
diff --git a/sysdeps/sparc/sparc32/sparcv9/bits/atomic.h b/sysdeps/sparc/sparc32/sparcv9/atomic-machine.h
index 0ff5dcd69d..0ff5dcd69d 100644
--- a/sysdeps/sparc/sparc32/sparcv9/bits/atomic.h
+++ b/sysdeps/sparc/sparc32/sparcv9/atomic-machine.h
diff --git a/sysdeps/sparc/sparc64/bits/atomic.h b/sysdeps/sparc/sparc64/atomic-machine.h
index 79f4a1d9be..79f4a1d9be 100644
--- a/sysdeps/sparc/sparc64/bits/atomic.h
+++ b/sysdeps/sparc/sparc64/atomic-machine.h
diff --git a/sysdeps/tile/bits/atomic.h b/sysdeps/tile/atomic-machine.h
index eabb07e711..eabb07e711 100644
--- a/sysdeps/tile/bits/atomic.h
+++ b/sysdeps/tile/atomic-machine.h
diff --git a/sysdeps/tile/tilegx/bits/atomic.h b/sysdeps/tile/tilegx/atomic-machine.h
index e75efb1c41..1f7805bb88 100644
--- a/sysdeps/tile/tilegx/bits/atomic.h
+++ b/sysdeps/tile/tilegx/atomic-machine.h
@@ -16,8 +16,8 @@
    License along with the GNU C Library.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
-#ifndef _BITS_ATOMIC_H
-#define _BITS_ATOMIC_H	1
+#ifndef _ATOMIC_MACHINE_H
+#define _ATOMIC_MACHINE_H	1
 
 #include <arch/spr_def.h>
 
@@ -55,6 +55,6 @@
 #define atomic_decrement_if_positive(mem) \
   __atomic_update (mem, -1, fetchaddgez)
 
-#include <sysdeps/tile/bits/atomic.h>
+#include <sysdeps/tile/atomic-machine.h>
 
-#endif /* bits/atomic.h */
+#endif /* atomic-machine.h */
diff --git a/sysdeps/tile/tilepro/bits/atomic.h b/sysdeps/tile/tilepro/atomic-machine.h
index e0ef9fb5e7..a99f170394 100644
--- a/sysdeps/tile/tilepro/bits/atomic.h
+++ b/sysdeps/tile/tilepro/atomic-machine.h
@@ -16,8 +16,8 @@
    License along with the GNU C Library.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
-#ifndef _BITS_ATOMIC_H
-#define _BITS_ATOMIC_H	1
+#ifndef _ATOMIC_MACHINE_H
+#define _ATOMIC_MACHINE_H	1
 
 #include <asm/unistd.h>
 
@@ -83,6 +83,6 @@ int __atomic_update_32 (volatile int *mem, int mask, int addend)
   ({ __typeof (mask) __att1_v = (mask);                 \
     __atomic_update ((mem), ~__att1_v, __att1_v); })
 
-#include <sysdeps/tile/bits/atomic.h>
+#include <sysdeps/tile/atomic-machine.h>
 
-#endif /* bits/atomic.h */
+#endif /* atomic-machine.h */
diff --git a/sysdeps/unix/sysv/linux/arm/bits/atomic.h b/sysdeps/unix/sysv/linux/arm/atomic-machine.h
index 17cff546ad..4f5f3f4514 100644
--- a/sysdeps/unix/sysv/linux/arm/bits/atomic.h
+++ b/sysdeps/unix/sysv/linux/arm/atomic-machine.h
@@ -104,4 +104,4 @@
      (__typeof (oldval)) a_tmp; })
 #endif
 
-#include <sysdeps/arm/bits/atomic.h>
+#include <sysdeps/arm/atomic-machine.h>
diff --git a/sysdeps/unix/sysv/linux/hppa/bits/atomic.h b/sysdeps/unix/sysv/linux/hppa/atomic-machine.h
index 26b66c5134..8fbcb493a7 100644
--- a/sysdeps/unix/sysv/linux/hppa/bits/atomic.h
+++ b/sysdeps/unix/sysv/linux/hppa/atomic-machine.h
@@ -25,8 +25,8 @@
 #define ENOSYS	251
 #endif
 
-#ifndef _BITS_ATOMIC_H
-#define _BITS_ATOMIC_H	1
+#ifndef _ATOMIC_MACHINE_H
+#define _ATOMIC_MACHINE_H	1
 
 typedef int8_t atomic8_t;
 typedef uint8_t uatomic8_t;
@@ -100,4 +100,4 @@ typedef uintmax_t uatomic_max_t;
    })
 
 #endif
-/* _BITS_ATOMIC_H */
+/* _ATOMIC_MACHINE_H */
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/bits/atomic.h b/sysdeps/unix/sysv/linux/m68k/coldfire/atomic-machine.h
index 16002f15db..ee6f8e254a 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/bits/atomic.h
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/atomic-machine.h
@@ -16,8 +16,8 @@
    License along with the GNU C Library.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
-#ifndef _BITS_ATOMIC_H
-#define _BITS_ATOMIC_H	1
+#ifndef _ATOMIC_MACHINE_H
+#define _ATOMIC_MACHINE_H	1
 
 #include <stdint.h>
 #include <sysdep.h>
diff --git a/sysdeps/unix/sysv/linux/nios2/bits/atomic.h b/sysdeps/unix/sysv/linux/nios2/atomic-machine.h
index 2329f7463d..ee4e4e3b0a 100644
--- a/sysdeps/unix/sysv/linux/nios2/bits/atomic.h
+++ b/sysdeps/unix/sysv/linux/nios2/atomic-machine.h
@@ -16,8 +16,8 @@
    License along with the GNU C Library.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
-#ifndef _NIOS2_BITS_ATOMIC_H
-#define _NIOS2_BITS_ATOMIC_H 1
+#ifndef _NIOS2_ATOMIC_MACHINE_H
+#define _NIOS2_ATOMIC_MACHINE_H 1
 
 #include <stdint.h>
 
@@ -89,4 +89,4 @@ typedef uintmax_t uatomic_max_t;
 
 #define atomic_full_barrier()  ({ asm volatile ("sync"); })
 
-#endif /* _NIOS2_BITS_ATOMIC_H */
+#endif /* _NIOS2_ATOMIC_MACHINE_H */
diff --git a/sysdeps/unix/sysv/linux/sh/bits/atomic.h b/sysdeps/unix/sysv/linux/sh/atomic-machine.h
index 8a188c5675..8a188c5675 100644
--- a/sysdeps/unix/sysv/linux/sh/bits/atomic.h
+++ b/sysdeps/unix/sysv/linux/sh/atomic-machine.h
diff --git a/sysdeps/x86_64/bits/atomic.h b/sysdeps/x86_64/atomic-machine.h
index 337b334db1..337b334db1 100644
--- a/sysdeps/x86_64/bits/atomic.h
+++ b/sysdeps/x86_64/atomic-machine.h