mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-26 23:10:06 +00:00
Simplify tilegx sysdeps folder
With tilepro support removal we can now simplify internal tile support by moving the directory structure to avoid the unnecessary directory levels in tile/tilegx both on generic and linux folders. Checked with a build for tilegx-linux-gnu and tilegx-linux-gnu-32 with and without the patch, there is no difference in generated binary with a dissassemble. * stdlib/bug-getcontext.c (do_test): Remove tilepro mention in comment. * sysdeps/tile/preconfigure: Remove tilegx folder. * sysdeps/tile/tilegx/Implies: Move definitions to ... * sysdeps/tile/Implies: ... here. * sysdeps/tile/tilegx/Makefile: Move rules to ... * sysdeps/tile/Makefile: ... here. * sysdeps/tile/tilegx/atomic-machine.h: Move definitions to ... * sysdeps/tile/atomic-machine.h: ... here. Add include guards. * sysdeps/tile/tilegx/bits/wordsize.h: Move to ... * sysdeps/tile/bits/wordsize.h: ... here. * sysdeps/tile/tilegx/*: Move to ... * sysdeps/tile/*: ... here. * sysdeps/tile/tilegx/tilegx32/Implies: Move to ... * sysdeps/tile/tilegx32/Implies: ... here. * sysdeps/tile/tilegx/tilegx64/Implies: Move to ... * sysdeps/tile/tilegx64/Implies: ... here. * sysdeps/unix/sysv/linux/tile/tilegx/Makefile: Move definitions to ... * sysdeps/unix/sysv/linux/tile/Makefile: ... here. * sysdeps/unix/sysv/linux/tile/tilegx/*: Move to ... * sysdeps/unix/sysv/linux/tile/*: ... here. * sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/*: Move to ... * sysdeps/unix/sysv/linux/tile/tilegx32/*: ... here. * sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/*: Move to ... * sysdeps/unix/sysv/linux/tile/tilegx64/*: ... here.
This commit is contained in:
parent
ed95f61149
commit
24d1d8ec9e
27
ChangeLog
27
ChangeLog
@ -1,5 +1,32 @@
|
||||
2017-12-20 Adhemerval Zanella <adhemerval.zanella@linaro.org>
|
||||
|
||||
* stdlib/bug-getcontext.c (do_test): Remove tilepro mention in
|
||||
comment.
|
||||
* sysdeps/tile/preconfigure: Remove tilegx folder.
|
||||
* sysdeps/tile/tilegx/Implies: Move definitions to ...
|
||||
* sysdeps/tile/Implies: ... here.
|
||||
* sysdeps/tile/tilegx/Makefile: Move rules to ...
|
||||
* sysdeps/tile/Makefile: ... here.
|
||||
* sysdeps/tile/tilegx/atomic-machine.h: Move definitions to ...
|
||||
* sysdeps/tile/atomic-machine.h: ... here. Add include guards.
|
||||
* sysdeps/tile/tilegx/bits/wordsize.h: Move to ...
|
||||
* sysdeps/tile/bits/wordsize.h: ... here.
|
||||
* sysdeps/tile/tilegx/*: Move to ...
|
||||
* sysdeps/tile/*: ... here.
|
||||
* sysdeps/tile/tilegx/tilegx32/Implies: Move to ...
|
||||
* sysdeps/tile/tilegx32/Implies: ... here.
|
||||
* sysdeps/tile/tilegx/tilegx64/Implies: Move to ...
|
||||
* sysdeps/tile/tilegx64/Implies: ... here.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/Makefile: Move definitions
|
||||
to ...
|
||||
* sysdeps/unix/sysv/linux/tile/Makefile: ... here.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/*: Move to ...
|
||||
* sysdeps/unix/sysv/linux/tile/*: ... here.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/*: Move to ...
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx32/*: ... here.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/*: Move to ...
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx64/*: ... here.
|
||||
|
||||
* README: Remove tilepro-*-linux-gnu from supported architecture.
|
||||
* scripts/build-many-glibcs.py: Likewise.
|
||||
* sysdeps/tile/__tls_get_addr.S (__tls_get_addr): Likewise.
|
||||
|
@ -50,7 +50,7 @@ do_test (void)
|
||||
printf ("\nDone with getcontext()!\n");
|
||||
fflush (NULL);
|
||||
|
||||
/* On nios2 and tilepro, GCC 5 warns that except_mask may be used
|
||||
/* On nios2 GCC 5 warns that except_mask may be used
|
||||
uninitialized. Because it is always initialized and nothing in
|
||||
this test ever calls setcontext (a setcontext call could result
|
||||
in local variables being clobbered on the second return from
|
||||
|
@ -1,3 +1,4 @@
|
||||
ieee754/soft-fp
|
||||
ieee754/dbl-64/wordsize-64
|
||||
ieee754/dbl-64
|
||||
ieee754/flt-32
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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 */
|
||||
|
@ -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
|
||||
|
@ -1 +0,0 @@
|
||||
ieee754/dbl-64/wordsize-64
|
@ -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
|
@ -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 */
|
@ -1,3 +1,2 @@
|
||||
tile/tilegx
|
||||
tile
|
||||
wordsize-32
|
@ -1,3 +1,2 @@
|
||||
tile/tilegx
|
||||
tile
|
||||
wordsize-64
|
@ -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.
|
||||
|
@ -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/)
|
@ -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
|
@ -1,4 +0,0 @@
|
||||
# Provide biarch definitions.
|
||||
abi-variants := 64 32
|
||||
abi-64-condition := __WORDSIZE == 64
|
||||
abi-32-condition := __WORDSIZE == 32
|
@ -1,4 +1,3 @@
|
||||
unix/sysv/linux/tile/tilegx
|
||||
unix/sysv/linux/tile
|
||||
unix/sysv/linux/generic/wordsize-32
|
||||
unix/sysv/linux/generic
|
@ -1,4 +1,3 @@
|
||||
unix/sysv/linux/tile/tilegx
|
||||
unix/sysv/linux/tile
|
||||
unix/sysv/linux/generic
|
||||
unix/sysv/linux/wordsize-64
|
Loading…
Reference in New Issue
Block a user