mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-23 13:30: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>
|
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.
|
* README: Remove tilepro-*-linux-gnu from supported architecture.
|
||||||
* scripts/build-many-glibcs.py: Likewise.
|
* scripts/build-many-glibcs.py: Likewise.
|
||||||
* sysdeps/tile/__tls_get_addr.S (__tls_get_addr): Likewise.
|
* sysdeps/tile/__tls_get_addr.S (__tls_get_addr): Likewise.
|
||||||
|
@ -50,7 +50,7 @@ do_test (void)
|
|||||||
printf ("\nDone with getcontext()!\n");
|
printf ("\nDone with getcontext()!\n");
|
||||||
fflush (NULL);
|
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
|
uninitialized. Because it is always initialized and nothing in
|
||||||
this test ever calls setcontext (a setcontext call could result
|
this test ever calls setcontext (a setcontext call could result
|
||||||
in local variables being clobbered on the second return from
|
in local variables being clobbered on the second return from
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
ieee754/soft-fp
|
ieee754/soft-fp
|
||||||
|
ieee754/dbl-64/wordsize-64
|
||||||
ieee754/dbl-64
|
ieee754/dbl-64
|
||||||
ieee754/flt-32
|
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
|
# 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.
|
# this variable; it's here mostly for documentational purposes.
|
||||||
|
|
||||||
|
@ -16,20 +16,12 @@
|
|||||||
License along with the GNU C Library. If not, see
|
License along with the GNU C Library. If not, see
|
||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
/* The sub-architecture headers provide definitions for these macros
|
#ifndef _ATOMIC_MACHINE_H
|
||||||
that work for "int" and "long" size values only:
|
#define _ATOMIC_MACHINE_H 1
|
||||||
|
|
||||||
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. */
|
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <features.h>
|
#include <features.h>
|
||||||
|
#include <arch/spr_def.h>
|
||||||
|
|
||||||
typedef int32_t atomic32_t;
|
typedef int32_t atomic32_t;
|
||||||
typedef uint32_t uatomic32_t;
|
typedef uint32_t uatomic32_t;
|
||||||
@ -46,6 +38,41 @@ typedef uintptr_t uatomicptr_t;
|
|||||||
typedef intmax_t atomic_max_t;
|
typedef intmax_t atomic_max_t;
|
||||||
typedef uintmax_t uatomic_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. */
|
/* Barrier macro. */
|
||||||
#define atomic_full_barrier() __sync_synchronize()
|
#define atomic_full_barrier() __sync_synchronize()
|
||||||
|
|
||||||
@ -79,3 +106,5 @@ typedef uintmax_t uatomic_max_t;
|
|||||||
*/
|
*/
|
||||||
extern int __atomic_error_bad_argument_size(void)
|
extern int __atomic_error_bad_argument_size(void)
|
||||||
__attribute__ ((warning ("bad sizeof atomic argument")));
|
__attribute__ ((warning ("bad sizeof atomic argument")));
|
||||||
|
|
||||||
|
#endif /* _ATOMIC_MACHINE_H */
|
||||||
|
@ -3,8 +3,8 @@ case "$machine" in
|
|||||||
tilegx*)
|
tilegx*)
|
||||||
base_machine=tile
|
base_machine=tile
|
||||||
if $CC $CFLAGS $CPPFLAGS -E -dM -xc /dev/null | grep -q __LP64__; then
|
if $CC $CFLAGS $CPPFLAGS -E -dM -xc /dev/null | grep -q __LP64__; then
|
||||||
machine=tile/tilegx/tilegx64
|
machine=tile/tilegx64
|
||||||
else
|
else
|
||||||
machine=tile/tilegx/tilegx32
|
machine=tile/tilegx32
|
||||||
fi ;;
|
fi ;;
|
||||||
esac
|
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
|
tile
|
||||||
wordsize-32
|
wordsize-32
|
@ -1,3 +1,2 @@
|
|||||||
tile/tilegx
|
|
||||||
tile
|
tile
|
||||||
wordsize-64
|
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)
|
ifeq ($(subdir),misc)
|
||||||
|
|
||||||
# <sys/reg.h> provides something like x86 compatibility.
|
# <sys/reg.h> provides something like x86 compatibility.
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
ldd_rewrite_script=$dir/ldd-rewrite.sed
|
ldd_rewrite_script=$dir/ldd-rewrite.sed
|
||||||
|
|
||||||
case $machine in
|
case $machine in
|
||||||
tile/tilegx/tilegx32)
|
tile/tilegx32)
|
||||||
test -n "$libc_cv_slibdir" ||
|
test -n "$libc_cv_slibdir" ||
|
||||||
case "$prefix" in
|
case "$prefix" in
|
||||||
/usr | /usr/)
|
/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
|
ldd_rewrite_script=$dir/ldd-rewrite.sed
|
||||||
|
|
||||||
case $machine in
|
case $machine in
|
||||||
tile/tilegx/tilegx32)
|
tile/tilegx32)
|
||||||
LIBC_SLIBDIR_RTLDDIR([lib32], [lib32])
|
LIBC_SLIBDIR_RTLDDIR([lib32], [lib32])
|
||||||
;;
|
;;
|
||||||
esac
|
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/tile
|
||||||
unix/sysv/linux/generic/wordsize-32
|
unix/sysv/linux/generic/wordsize-32
|
||||||
unix/sysv/linux/generic
|
unix/sysv/linux/generic
|
@ -1,4 +1,3 @@
|
|||||||
unix/sysv/linux/tile/tilegx
|
|
||||||
unix/sysv/linux/tile
|
unix/sysv/linux/tile
|
||||||
unix/sysv/linux/generic
|
unix/sysv/linux/generic
|
||||||
unix/sysv/linux/wordsize-64
|
unix/sysv/linux/wordsize-64
|
Loading…
Reference in New Issue
Block a user