diff options
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.h | 42 | ||||
-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 |