diff options
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/tile/Implies | 1 | ||||
-rw-r--r-- | sysdeps/tile/Makefile | 36 | ||||
-rw-r--r-- | sysdeps/tile/atomic-machine.h | 51 | ||||
-rw-r--r-- | sysdeps/tile/bits/wordsize.h (renamed from sysdeps/tile/tilegx/bits/wordsize.h) | 0 | ||||
-rw-r--r-- | sysdeps/tile/memchr.c (renamed from sysdeps/tile/tilegx/memchr.c) | 0 | ||||
-rw-r--r-- | sysdeps/tile/memcpy.c (renamed from sysdeps/tile/tilegx/memcpy.c) | 0 | ||||
-rw-r--r-- | sysdeps/tile/memset.c (renamed from sysdeps/tile/tilegx/memset.c) | 0 | ||||
-rw-r--r-- | sysdeps/tile/memusage.h (renamed from sysdeps/tile/tilegx/memusage.h) | 0 | ||||
-rw-r--r-- | sysdeps/tile/preconfigure | 4 | ||||
-rw-r--r-- | sysdeps/tile/rawmemchr.c (renamed from sysdeps/tile/tilegx/rawmemchr.c) | 0 | ||||
-rw-r--r-- | sysdeps/tile/strcasestr.c (renamed from sysdeps/tile/tilegx/strcasestr.c) | 0 | ||||
-rw-r--r-- | sysdeps/tile/strchr.c (renamed from sysdeps/tile/tilegx/strchr.c) | 0 | ||||
-rw-r--r-- | sysdeps/tile/strchrnul.c (renamed from sysdeps/tile/tilegx/strchrnul.c) | 0 | ||||
-rw-r--r-- | sysdeps/tile/string-endian.h (renamed from sysdeps/tile/tilegx/string-endian.h) | 0 | ||||
-rw-r--r-- | sysdeps/tile/strlen.c (renamed from sysdeps/tile/tilegx/strlen.c) | 0 | ||||
-rw-r--r-- | sysdeps/tile/strnlen.c (renamed from sysdeps/tile/tilegx/strnlen.c) | 0 | ||||
-rw-r--r-- | sysdeps/tile/strrchr.c (renamed from sysdeps/tile/tilegx/strrchr.c) | 0 | ||||
-rw-r--r-- | sysdeps/tile/strstr.c (renamed from sysdeps/tile/tilegx/strstr.c) | 0 | ||||
-rw-r--r-- | sysdeps/tile/tilegx/Implies | 1 | ||||
-rw-r--r-- | sysdeps/tile/tilegx/Makefile | 35 | ||||
-rw-r--r-- | sysdeps/tile/tilegx/atomic-machine.h | 61 | ||||
-rw-r--r-- | sysdeps/tile/tilegx32/Implies (renamed from sysdeps/tile/tilegx/tilegx32/Implies) | 1 | ||||
-rw-r--r-- | sysdeps/tile/tilegx64/Implies (renamed from sysdeps/tile/tilegx/tilegx64/Implies) | 1 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/Makefile | 5 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/configure (renamed from sysdeps/unix/sysv/linux/tile/tilegx/configure) | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/configure.ac (renamed from sysdeps/unix/sysv/linux/tile/tilegx/configure.ac) | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/ioctl.S (renamed from sysdeps/unix/sysv/linux/tile/tilegx/ioctl.S) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/ldconfig.h (renamed from sysdeps/unix/sysv/linux/tile/tilegx/ldconfig.h) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/ldd-rewrite.sed (renamed from sysdeps/unix/sysv/linux/tile/tilegx/ldd-rewrite.sed) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/register-dump.h (renamed from sysdeps/unix/sysv/linux/tile/tilegx/register-dump.h) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/sched_getcpu.c (renamed from sysdeps/unix/sysv/linux/tile/tilegx/sched_getcpu.c) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx/Makefile | 4 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx32/Implies (renamed from sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/Implies) | 1 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx32/Makefile (renamed from sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/Makefile) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx32/c++-types.data (renamed from sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/c++-types.data) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx32/jmp_buf-macros.h (renamed from sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/jmp_buf-macros.h) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx32/ld.abilist (renamed from sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/ld.abilist) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx32/libBrokenLocale.abilist (renamed from sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libBrokenLocale.abilist) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx32/libanl.abilist (renamed from sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libanl.abilist) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx32/libc.abilist (renamed from sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx32/libcrypt.abilist (renamed from sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libcrypt.abilist) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx32/libdl.abilist (renamed from sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libdl.abilist) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx32/libm.abilist (renamed from sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx32/libnsl.abilist (renamed from sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libnsl.abilist) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx32/libpthread.abilist (renamed from sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libpthread.abilist) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx32/libresolv.abilist (renamed from sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libresolv.abilist) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx32/librt.abilist (renamed from sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/librt.abilist) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx32/libthread_db.abilist (renamed from sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libthread_db.abilist) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx32/libutil.abilist (renamed from sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libutil.abilist) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx64/Implies (renamed from sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/Implies) | 1 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx64/Makefile (renamed from sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/Makefile) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx64/c++-types.data (renamed from sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/c++-types.data) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx64/jmp_buf-macros.h (renamed from sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/jmp_buf-macros.h) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx64/ld.abilist (renamed from sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/ld.abilist) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx64/libBrokenLocale.abilist (renamed from sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libBrokenLocale.abilist) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx64/libanl.abilist (renamed from sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libanl.abilist) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx64/libc.abilist (renamed from sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx64/libcrypt.abilist (renamed from sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libcrypt.abilist) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx64/libdl.abilist (renamed from sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libdl.abilist) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx64/libm.abilist (renamed from sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx64/libnsl.abilist (renamed from sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libnsl.abilist) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx64/libpthread.abilist (renamed from sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libpthread.abilist) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx64/libresolv.abilist (renamed from sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libresolv.abilist) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx64/librt.abilist (renamed from sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/librt.abilist) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx64/libthread_db.abilist (renamed from sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libthread_db.abilist) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx64/libutil.abilist (renamed from sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libutil.abilist) | 0 |
66 files changed, 86 insertions, 120 deletions
diff --git a/sysdeps/tile/Implies b/sysdeps/tile/Implies index 1cbc053..cb17441 100644 --- a/sysdeps/tile/Implies +++ b/sysdeps/tile/Implies @@ -1,3 +1,4 @@ ieee754/soft-fp +ieee754/dbl-64/wordsize-64 ieee754/dbl-64 ieee754/flt-32 diff --git a/sysdeps/tile/Makefile b/sysdeps/tile/Makefile index 3cd4d1e..dcb8777 100644 --- a/sysdeps/tile/Makefile +++ b/sysdeps/tile/Makefile @@ -1,3 +1,39 @@ +include $(common-objpfx)cflags-mcmodel-large.mk + +# Check for gcc to support the command-line switch, and for +# binutils to support the hwN_plt() assembly operators and relocations. +$(common-objpfx)cflags-mcmodel-large.mk: $(common-objpfx)config.make + mcmodel=no; \ + (echo 'int main() { return getuid(); }' | \ + $(CC) -o /dev/null -xc - -mcmodel=large -fpic) && mcmodel=yes; \ + echo "cflags-mcmodel-large = $$mcmodel" > $@ + +ifeq (yes,$(cflags-mcmodel-large)) + +ifeq ($(subdir),csu) +# elf-init.c is in libc_nonshared.o (the end of the shared object) but +# must reach the _init symbol at the very start of the shared object. +CFLAGS-elf-init.c += -mcmodel=large + +# __gmon_start__ is at the very start of the shared object when linked +# with profiling, but calls to libc.so via the PLT at the very end. +CFLAGS-gmon-start.c += -mcmodel=large +endif + +else + +# Don't try to compile assembly code with hwN_plt() directives if the +# toolchain doesn't support -mcmodel=large. +ifeq ($(subdir),csu) +CPPFLAGS-start.S += -DNO_PLT_PCREL +CPPFLAGS-crti.S += -DNO_PLT_PCREL +endif +ifeq ($(subdir),nptl) +CPPFLAGS-pt-crti.S += -DNO_PLT_PCREL +endif + +endif + # We don't support long doubles as a distinct type. We don't need to set # this variable; it's here mostly for documentational purposes. diff --git a/sysdeps/tile/atomic-machine.h b/sysdeps/tile/atomic-machine.h index 32277c9..58ce76c 100644 --- a/sysdeps/tile/atomic-machine.h +++ b/sysdeps/tile/atomic-machine.h @@ -16,20 +16,12 @@ License along with the GNU C Library. If not, see <http://www.gnu.org/licenses/>. */ -/* The sub-architecture headers provide definitions for these macros - that work for "int" and "long" size values only: - - atomic_compare_and_exchange_val_acq() - atomic_exchange_acq() - atomic_exchange_and_add() - atomic_and_val() - atomic_or_val() - atomic_decrement_if_positive() [tilegx only] - - Here we provide generic definitions true for all Tilera chips. */ +#ifndef _ATOMIC_MACHINE_H +#define _ATOMIC_MACHINE_H 1 #include <stdint.h> #include <features.h> +#include <arch/spr_def.h> typedef int32_t atomic32_t; typedef uint32_t uatomic32_t; @@ -46,6 +38,41 @@ typedef uintptr_t uatomicptr_t; typedef intmax_t atomic_max_t; typedef uintmax_t uatomic_max_t; +#ifdef _LP64 +# define __HAVE_64B_ATOMICS 1 +#else +/* tilegx32 does have 64-bit atomics, but assumptions in the semaphore + code mean that unaligned 64-bit atomics will be used if this symbol + is true, and unaligned atomics are not supported on tile. */ +# define __HAVE_64B_ATOMICS 0 +#endif + +#define USE_ATOMIC_COMPILER_BUILTINS 0 +#define ATOMIC_EXCHANGE_USES_CAS 0 + +/* Pick appropriate 8- or 4-byte instruction. */ +#define __atomic_update(mem, v, op) \ + ((__typeof (*(mem))) (__typeof (*(mem) - *(mem))) \ + ((sizeof (*(mem)) == 8) ? \ + __insn_##op ((void *) (mem), (int64_t) (__typeof((v) - (v))) (v)) : \ + (sizeof (*(mem)) == 4) ? \ + __insn_##op##4 ((void *) (mem), (int32_t) (__typeof ((v) - (v))) (v)) : \ + __atomic_error_bad_argument_size())) + +#define atomic_compare_and_exchange_val_acq(mem, n, o) \ + ({ __insn_mtspr (SPR_CMPEXCH_VALUE, (int64_t) (__typeof ((o) - (o))) (o)); \ + __atomic_update (mem, n, cmpexch); }) +#define atomic_exchange_acq(mem, newvalue) \ + __atomic_update (mem, newvalue, exch) +#define atomic_exchange_and_add(mem, value) \ + __atomic_update (mem, value, fetchadd) +#define atomic_and_val(mem, mask) \ + __atomic_update (mem, mask, fetchand) +#define atomic_or_val(mem, mask) \ + __atomic_update (mem, mask, fetchor) +#define atomic_decrement_if_positive(mem) \ + __atomic_update (mem, -1, fetchaddgez) + /* Barrier macro. */ #define atomic_full_barrier() __sync_synchronize() @@ -79,3 +106,5 @@ typedef uintmax_t uatomic_max_t; */ extern int __atomic_error_bad_argument_size(void) __attribute__ ((warning ("bad sizeof atomic argument"))); + +#endif /* _ATOMIC_MACHINE_H */ diff --git a/sysdeps/tile/tilegx/bits/wordsize.h b/sysdeps/tile/bits/wordsize.h index 9dc4da5..9dc4da5 100644 --- a/sysdeps/tile/tilegx/bits/wordsize.h +++ b/sysdeps/tile/bits/wordsize.h diff --git a/sysdeps/tile/tilegx/memchr.c b/sysdeps/tile/memchr.c index 38c0da6..38c0da6 100644 --- a/sysdeps/tile/tilegx/memchr.c +++ b/sysdeps/tile/memchr.c diff --git a/sysdeps/tile/tilegx/memcpy.c b/sysdeps/tile/memcpy.c index c1a2a29..c1a2a29 100644 --- a/sysdeps/tile/tilegx/memcpy.c +++ b/sysdeps/tile/memcpy.c diff --git a/sysdeps/tile/tilegx/memset.c b/sysdeps/tile/memset.c index c6804a9..c6804a9 100644 --- a/sysdeps/tile/tilegx/memset.c +++ b/sysdeps/tile/memset.c diff --git a/sysdeps/tile/tilegx/memusage.h b/sysdeps/tile/memusage.h index c91371a..c91371a 100644 --- a/sysdeps/tile/tilegx/memusage.h +++ b/sysdeps/tile/memusage.h diff --git a/sysdeps/tile/preconfigure b/sysdeps/tile/preconfigure index d2165c3..21382df 100644 --- a/sysdeps/tile/preconfigure +++ b/sysdeps/tile/preconfigure @@ -3,8 +3,8 @@ case "$machine" in tilegx*) base_machine=tile if $CC $CFLAGS $CPPFLAGS -E -dM -xc /dev/null | grep -q __LP64__; then - machine=tile/tilegx/tilegx64 + machine=tile/tilegx64 else - machine=tile/tilegx/tilegx32 + machine=tile/tilegx32 fi ;; esac diff --git a/sysdeps/tile/tilegx/rawmemchr.c b/sysdeps/tile/rawmemchr.c index 3f5044c..3f5044c 100644 --- a/sysdeps/tile/tilegx/rawmemchr.c +++ b/sysdeps/tile/rawmemchr.c diff --git a/sysdeps/tile/tilegx/strcasestr.c b/sysdeps/tile/strcasestr.c index ecb3e62..ecb3e62 100644 --- a/sysdeps/tile/tilegx/strcasestr.c +++ b/sysdeps/tile/strcasestr.c diff --git a/sysdeps/tile/tilegx/strchr.c b/sysdeps/tile/strchr.c index 1a5eb5c..1a5eb5c 100644 --- a/sysdeps/tile/tilegx/strchr.c +++ b/sysdeps/tile/strchr.c diff --git a/sysdeps/tile/tilegx/strchrnul.c b/sysdeps/tile/strchrnul.c index e3024dd..e3024dd 100644 --- a/sysdeps/tile/tilegx/strchrnul.c +++ b/sysdeps/tile/strchrnul.c diff --git a/sysdeps/tile/tilegx/string-endian.h b/sysdeps/tile/string-endian.h index 09b5781..09b5781 100644 --- a/sysdeps/tile/tilegx/string-endian.h +++ b/sysdeps/tile/string-endian.h diff --git a/sysdeps/tile/tilegx/strlen.c b/sysdeps/tile/strlen.c index cebdf22..cebdf22 100644 --- a/sysdeps/tile/tilegx/strlen.c +++ b/sysdeps/tile/strlen.c diff --git a/sysdeps/tile/tilegx/strnlen.c b/sysdeps/tile/strnlen.c index c3560d2..c3560d2 100644 --- a/sysdeps/tile/tilegx/strnlen.c +++ b/sysdeps/tile/strnlen.c diff --git a/sysdeps/tile/tilegx/strrchr.c b/sysdeps/tile/strrchr.c index 51a08b7..51a08b7 100644 --- a/sysdeps/tile/tilegx/strrchr.c +++ b/sysdeps/tile/strrchr.c diff --git a/sysdeps/tile/tilegx/strstr.c b/sysdeps/tile/strstr.c index f82936a..f82936a 100644 --- a/sysdeps/tile/tilegx/strstr.c +++ b/sysdeps/tile/strstr.c diff --git a/sysdeps/tile/tilegx/Implies b/sysdeps/tile/tilegx/Implies deleted file mode 100644 index ade71c1..0000000 --- a/sysdeps/tile/tilegx/Implies +++ /dev/null @@ -1 +0,0 @@ -ieee754/dbl-64/wordsize-64 diff --git a/sysdeps/tile/tilegx/Makefile b/sysdeps/tile/tilegx/Makefile deleted file mode 100644 index 4281dd9..0000000 --- a/sysdeps/tile/tilegx/Makefile +++ /dev/null @@ -1,35 +0,0 @@ -include $(common-objpfx)cflags-mcmodel-large.mk - -# Check for gcc to support the command-line switch, and for -# binutils to support the hwN_plt() assembly operators and relocations. -$(common-objpfx)cflags-mcmodel-large.mk: $(common-objpfx)config.make - mcmodel=no; \ - (echo 'int main() { return getuid(); }' | \ - $(CC) -o /dev/null -xc - -mcmodel=large -fpic) && mcmodel=yes; \ - echo "cflags-mcmodel-large = $$mcmodel" > $@ - -ifeq (yes,$(cflags-mcmodel-large)) - -ifeq ($(subdir),csu) -# elf-init.c is in libc_nonshared.o (the end of the shared object) but -# must reach the _init symbol at the very start of the shared object. -CFLAGS-elf-init.c += -mcmodel=large - -# __gmon_start__ is at the very start of the shared object when linked -# with profiling, but calls to libc.so via the PLT at the very end. -CFLAGS-gmon-start.c += -mcmodel=large -endif - -else - -# Don't try to compile assembly code with hwN_plt() directives if the -# toolchain doesn't support -mcmodel=large. -ifeq ($(subdir),csu) -CPPFLAGS-start.S += -DNO_PLT_PCREL -CPPFLAGS-crti.S += -DNO_PLT_PCREL -endif -ifeq ($(subdir),nptl) -CPPFLAGS-pt-crti.S += -DNO_PLT_PCREL -endif - -endif diff --git a/sysdeps/tile/tilegx/atomic-machine.h b/sysdeps/tile/tilegx/atomic-machine.h deleted file mode 100644 index e77f670..0000000 --- a/sysdeps/tile/tilegx/atomic-machine.h +++ /dev/null @@ -1,61 +0,0 @@ -/* Copyright (C) 2011-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011. - - 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 - -#include <arch/spr_def.h> - -#ifdef _LP64 -# define __HAVE_64B_ATOMICS 1 -#else -/* tilegx32 does have 64-bit atomics, but assumptions in the semaphore - code mean that unaligned 64-bit atomics will be used if this symbol - is true, and unaligned atomics are not supported on tile. */ -# define __HAVE_64B_ATOMICS 0 -#endif - -#define USE_ATOMIC_COMPILER_BUILTINS 0 -#define ATOMIC_EXCHANGE_USES_CAS 0 - -/* Pick appropriate 8- or 4-byte instruction. */ -#define __atomic_update(mem, v, op) \ - ((__typeof (*(mem))) (__typeof (*(mem) - *(mem))) \ - ((sizeof (*(mem)) == 8) ? \ - __insn_##op ((void *) (mem), (int64_t) (__typeof((v) - (v))) (v)) : \ - (sizeof (*(mem)) == 4) ? \ - __insn_##op##4 ((void *) (mem), (int32_t) (__typeof ((v) - (v))) (v)) : \ - __atomic_error_bad_argument_size())) - -#define atomic_compare_and_exchange_val_acq(mem, n, o) \ - ({ __insn_mtspr (SPR_CMPEXCH_VALUE, (int64_t) (__typeof ((o) - (o))) (o)); \ - __atomic_update (mem, n, cmpexch); }) -#define atomic_exchange_acq(mem, newvalue) \ - __atomic_update (mem, newvalue, exch) -#define atomic_exchange_and_add(mem, value) \ - __atomic_update (mem, value, fetchadd) -#define atomic_and_val(mem, mask) \ - __atomic_update (mem, mask, fetchand) -#define atomic_or_val(mem, mask) \ - __atomic_update (mem, mask, fetchor) -#define atomic_decrement_if_positive(mem) \ - __atomic_update (mem, -1, fetchaddgez) - -#include <sysdeps/tile/atomic-machine.h> - -#endif /* atomic-machine.h */ diff --git a/sysdeps/tile/tilegx/tilegx32/Implies b/sysdeps/tile/tilegx32/Implies index 993b7f4..709e1dc 100644 --- a/sysdeps/tile/tilegx/tilegx32/Implies +++ b/sysdeps/tile/tilegx32/Implies @@ -1,3 +1,2 @@ -tile/tilegx tile wordsize-32 diff --git a/sysdeps/tile/tilegx/tilegx64/Implies b/sysdeps/tile/tilegx64/Implies index eb0686e..1e9db8e 100644 --- a/sysdeps/tile/tilegx/tilegx64/Implies +++ b/sysdeps/tile/tilegx64/Implies @@ -1,3 +1,2 @@ -tile/tilegx tile wordsize-64 diff --git a/sysdeps/unix/sysv/linux/tile/Makefile b/sysdeps/unix/sysv/linux/tile/Makefile index 04605a6..fddaf18 100644 --- a/sysdeps/unix/sysv/linux/tile/Makefile +++ b/sysdeps/unix/sysv/linux/tile/Makefile @@ -1,3 +1,8 @@ +# Provide biarch definitions. +abi-variants := 64 32 +abi-64-condition := __WORDSIZE == 64 +abi-32-condition := __WORDSIZE == 32 + ifeq ($(subdir),misc) # <sys/reg.h> provides something like x86 compatibility. diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/configure b/sysdeps/unix/sysv/linux/tile/configure index 36e42e0..63f9686 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/configure +++ b/sysdeps/unix/sysv/linux/tile/configure @@ -4,7 +4,7 @@ ldd_rewrite_script=$dir/ldd-rewrite.sed case $machine in -tile/tilegx/tilegx32) +tile/tilegx32) test -n "$libc_cv_slibdir" || case "$prefix" in /usr | /usr/) diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/configure.ac b/sysdeps/unix/sysv/linux/tile/configure.ac index baca1f6..45ec42c 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/configure.ac +++ b/sysdeps/unix/sysv/linux/tile/configure.ac @@ -4,7 +4,7 @@ GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. ldd_rewrite_script=$dir/ldd-rewrite.sed case $machine in -tile/tilegx/tilegx32) +tile/tilegx32) LIBC_SLIBDIR_RTLDDIR([lib32], [lib32]) ;; esac diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/ioctl.S b/sysdeps/unix/sysv/linux/tile/ioctl.S index 43f9563..43f9563 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/ioctl.S +++ b/sysdeps/unix/sysv/linux/tile/ioctl.S diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/ldconfig.h b/sysdeps/unix/sysv/linux/tile/ldconfig.h index 6185e30..6185e30 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/ldconfig.h +++ b/sysdeps/unix/sysv/linux/tile/ldconfig.h diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/ldd-rewrite.sed b/sysdeps/unix/sysv/linux/tile/ldd-rewrite.sed index 8b0bb69..8b0bb69 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/ldd-rewrite.sed +++ b/sysdeps/unix/sysv/linux/tile/ldd-rewrite.sed diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/register-dump.h b/sysdeps/unix/sysv/linux/tile/register-dump.h index 491413e..491413e 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/register-dump.h +++ b/sysdeps/unix/sysv/linux/tile/register-dump.h diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/sched_getcpu.c b/sysdeps/unix/sysv/linux/tile/sched_getcpu.c index 807913c..807913c 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/sched_getcpu.c +++ b/sysdeps/unix/sysv/linux/tile/sched_getcpu.c diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/Makefile b/sysdeps/unix/sysv/linux/tile/tilegx/Makefile deleted file mode 100644 index 62a5be6..0000000 --- a/sysdeps/unix/sysv/linux/tile/tilegx/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -# Provide biarch definitions. -abi-variants := 64 32 -abi-64-condition := __WORDSIZE == 64 -abi-32-condition := __WORDSIZE == 32 diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/Implies b/sysdeps/unix/sysv/linux/tile/tilegx32/Implies index 9090d3f..0023bb7 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/Implies +++ b/sysdeps/unix/sysv/linux/tile/tilegx32/Implies @@ -1,4 +1,3 @@ -unix/sysv/linux/tile/tilegx unix/sysv/linux/tile unix/sysv/linux/generic/wordsize-32 unix/sysv/linux/generic diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/Makefile b/sysdeps/unix/sysv/linux/tile/tilegx32/Makefile index 1e9d29b..1e9d29b 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/Makefile +++ b/sysdeps/unix/sysv/linux/tile/tilegx32/Makefile diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/c++-types.data b/sysdeps/unix/sysv/linux/tile/tilegx32/c++-types.data index 1a7bcb3..1a7bcb3 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/c++-types.data +++ b/sysdeps/unix/sysv/linux/tile/tilegx32/c++-types.data diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/jmp_buf-macros.h b/sysdeps/unix/sysv/linux/tile/tilegx32/jmp_buf-macros.h index eb64802..eb64802 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/jmp_buf-macros.h +++ b/sysdeps/unix/sysv/linux/tile/tilegx32/jmp_buf-macros.h diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/ld.abilist b/sysdeps/unix/sysv/linux/tile/tilegx32/ld.abilist index f166310..f166310 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/ld.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilegx32/ld.abilist diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libBrokenLocale.abilist b/sysdeps/unix/sysv/linux/tile/tilegx32/libBrokenLocale.abilist index 0d64827..0d64827 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libBrokenLocale.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilegx32/libBrokenLocale.abilist diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libanl.abilist b/sysdeps/unix/sysv/linux/tile/tilegx32/libanl.abilist index a3b1cc0..a3b1cc0 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libanl.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilegx32/libanl.abilist diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist b/sysdeps/unix/sysv/linux/tile/tilegx32/libc.abilist index dcbfbc0..dcbfbc0 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilegx32/libc.abilist diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libcrypt.abilist b/sysdeps/unix/sysv/linux/tile/tilegx32/libcrypt.abilist index d564380..d564380 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libcrypt.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilegx32/libcrypt.abilist diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libdl.abilist b/sysdeps/unix/sysv/linux/tile/tilegx32/libdl.abilist index cabc30c..cabc30c 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libdl.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilegx32/libdl.abilist diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist b/sysdeps/unix/sysv/linux/tile/tilegx32/libm.abilist index 6b375f5..6b375f5 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilegx32/libm.abilist diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libnsl.abilist b/sysdeps/unix/sysv/linux/tile/tilegx32/libnsl.abilist index 0277e5c..0277e5c 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libnsl.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilegx32/libnsl.abilist diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libpthread.abilist b/sysdeps/unix/sysv/linux/tile/tilegx32/libpthread.abilist index d16158f..d16158f 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libpthread.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilegx32/libpthread.abilist diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libresolv.abilist b/sysdeps/unix/sysv/linux/tile/tilegx32/libresolv.abilist index aa2fefa..aa2fefa 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libresolv.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilegx32/libresolv.abilist diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/librt.abilist b/sysdeps/unix/sysv/linux/tile/tilegx32/librt.abilist index 14f5c82..14f5c82 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/librt.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilegx32/librt.abilist diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libthread_db.abilist b/sysdeps/unix/sysv/linux/tile/tilegx32/libthread_db.abilist index 4aade0b..4aade0b 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libthread_db.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilegx32/libthread_db.abilist diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libutil.abilist b/sysdeps/unix/sysv/linux/tile/tilegx32/libutil.abilist index e4d4326..e4d4326 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libutil.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilegx32/libutil.abilist diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/Implies b/sysdeps/unix/sysv/linux/tile/tilegx64/Implies index e4e0800..f814319 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/Implies +++ b/sysdeps/unix/sysv/linux/tile/tilegx64/Implies @@ -1,4 +1,3 @@ -unix/sysv/linux/tile/tilegx unix/sysv/linux/tile unix/sysv/linux/generic unix/sysv/linux/wordsize-64 diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/Makefile b/sysdeps/unix/sysv/linux/tile/tilegx64/Makefile index c8991d3..c8991d3 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/Makefile +++ b/sysdeps/unix/sysv/linux/tile/tilegx64/Makefile diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/c++-types.data b/sysdeps/unix/sysv/linux/tile/tilegx64/c++-types.data index ac925cc..ac925cc 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/c++-types.data +++ b/sysdeps/unix/sysv/linux/tile/tilegx64/c++-types.data diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/jmp_buf-macros.h b/sysdeps/unix/sysv/linux/tile/tilegx64/jmp_buf-macros.h index 685f9b8..685f9b8 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/jmp_buf-macros.h +++ b/sysdeps/unix/sysv/linux/tile/tilegx64/jmp_buf-macros.h diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/ld.abilist b/sysdeps/unix/sysv/linux/tile/tilegx64/ld.abilist index ab74e7e..ab74e7e 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/ld.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilegx64/ld.abilist diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libBrokenLocale.abilist b/sysdeps/unix/sysv/linux/tile/tilegx64/libBrokenLocale.abilist index 0d64827..0d64827 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libBrokenLocale.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilegx64/libBrokenLocale.abilist diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libanl.abilist b/sysdeps/unix/sysv/linux/tile/tilegx64/libanl.abilist index a3b1cc0..a3b1cc0 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libanl.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilegx64/libanl.abilist diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist b/sysdeps/unix/sysv/linux/tile/tilegx64/libc.abilist index 53dc99c..53dc99c 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilegx64/libc.abilist diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libcrypt.abilist b/sysdeps/unix/sysv/linux/tile/tilegx64/libcrypt.abilist index d564380..d564380 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libcrypt.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilegx64/libcrypt.abilist diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libdl.abilist b/sysdeps/unix/sysv/linux/tile/tilegx64/libdl.abilist index cabc30c..cabc30c 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libdl.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilegx64/libdl.abilist diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist b/sysdeps/unix/sysv/linux/tile/tilegx64/libm.abilist index 6b375f5..6b375f5 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilegx64/libm.abilist diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libnsl.abilist b/sysdeps/unix/sysv/linux/tile/tilegx64/libnsl.abilist index 0277e5c..0277e5c 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libnsl.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilegx64/libnsl.abilist diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libpthread.abilist b/sysdeps/unix/sysv/linux/tile/tilegx64/libpthread.abilist index d16158f..d16158f 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libpthread.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilegx64/libpthread.abilist diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libresolv.abilist b/sysdeps/unix/sysv/linux/tile/tilegx64/libresolv.abilist index bd81642..bd81642 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libresolv.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilegx64/libresolv.abilist diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/librt.abilist b/sysdeps/unix/sysv/linux/tile/tilegx64/librt.abilist index 14f5c82..14f5c82 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/librt.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilegx64/librt.abilist diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libthread_db.abilist b/sysdeps/unix/sysv/linux/tile/tilegx64/libthread_db.abilist index 4aade0b..4aade0b 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libthread_db.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilegx64/libthread_db.abilist diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libutil.abilist b/sysdeps/unix/sysv/linux/tile/tilegx64/libutil.abilist index e4d4326..e4d4326 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libutil.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilegx64/libutil.abilist |