diff options
Diffstat (limited to 'libpthread/linuxthreads/sysdeps/ia64')
-rw-r--r-- | libpthread/linuxthreads/sysdeps/ia64/pspinlock.c | 78 | ||||
-rw-r--r-- | libpthread/linuxthreads/sysdeps/ia64/pt-machine.h | 6 | ||||
-rw-r--r-- | libpthread/linuxthreads/sysdeps/ia64/tcb-offsets.sym | 9 | ||||
-rw-r--r-- | libpthread/linuxthreads/sysdeps/ia64/tls.h | 6 |
4 files changed, 5 insertions, 94 deletions
diff --git a/libpthread/linuxthreads/sysdeps/ia64/pspinlock.c b/libpthread/linuxthreads/sysdeps/ia64/pspinlock.c deleted file mode 100644 index d5e52ff6b..000000000 --- a/libpthread/linuxthreads/sysdeps/ia64/pspinlock.c +++ /dev/null @@ -1,78 +0,0 @@ -/* POSIX spinlock implementation. ia64 version. - Copyright (C) 2000, 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jes Sorensen <jes@linuxcare.com> - - 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; see the file COPYING.LIB. If - not, see <http://www.gnu.org/licenses/>. */ - -#include <errno.h> -#include <pthread.h> -#include "internals.h" -#include <ia64intrin.h> - -/* This implementation is inspired by the implementation used in the - Linux kernel. */ - -int -__pthread_spin_lock (pthread_spinlock_t *lock) -{ - int *p = (int *) lock; - - while (__builtin_expect (__sync_val_compare_and_swap (p, 0, 1), 0)) - { - /* Spin without using the atomic instruction. */ - do - __asm__ __volatile__ ("" : : : "memory"); - while (*p); - } - return 0; -} -weak_alias (__pthread_spin_lock, pthread_spin_lock) - - -int -__pthread_spin_trylock (pthread_spinlock_t *lock) -{ - return __sync_val_compare_and_swap ((int *) lock, 0, 1) == 0 ? 0 : EBUSY; -} -weak_alias (__pthread_spin_trylock, pthread_spin_trylock) - - -int -__pthread_spin_unlock (pthread_spinlock_t *lock) -{ - return *lock = 0; -} -weak_alias (__pthread_spin_unlock, pthread_spin_unlock) - - -int -__pthread_spin_init (pthread_spinlock_t *lock, int pshared) -{ - /* We can ignore the `pshared' parameter. Since we are busy-waiting - all processes which can access the memory location `lock' points - to can use the spinlock. */ - return *lock = 0; -} -weak_alias (__pthread_spin_init, pthread_spin_init) - - -int -__pthread_spin_destroy (pthread_spinlock_t *lock) -{ - /* Nothing to do. */ - return 0; -} -weak_alias (__pthread_spin_destroy, pthread_spin_destroy) diff --git a/libpthread/linuxthreads/sysdeps/ia64/pt-machine.h b/libpthread/linuxthreads/sysdeps/ia64/pt-machine.h index 55bdd5df5..f4c6be989 100644 --- a/libpthread/linuxthreads/sysdeps/ia64/pt-machine.h +++ b/libpthread/linuxthreads/sysdeps/ia64/pt-machine.h @@ -23,6 +23,10 @@ #include <features.h> #include <ia64intrin.h> +#include <sys/types.h> +extern int __clone2 (int (*__fn) (void *__arg), void *__child_stack_base, + size_t __child_stack_size, int __flags, void *__arg, ...); + #ifndef PT_EI # define PT_EI __extern_always_inline #endif @@ -30,7 +34,7 @@ /* Make sure gcc doesn't try to be clever and move things around on us. We need to use _exactly_ the address the user gave us, not some alias that contains the same information. */ -#define __atomic_fool_gcc(x) (*(__volatile__ struct { int a[100]; } *)x) +#define __atomic_fool_gcc(x) (*(volatile struct { int a[100]; } *)x) #ifndef ELF_MACHINE_NAME diff --git a/libpthread/linuxthreads/sysdeps/ia64/tcb-offsets.sym b/libpthread/linuxthreads/sysdeps/ia64/tcb-offsets.sym deleted file mode 100644 index 1000ad0a9..000000000 --- a/libpthread/linuxthreads/sysdeps/ia64/tcb-offsets.sym +++ /dev/null @@ -1,9 +0,0 @@ -#include <sysdep.h> -#include <tls.h> - --- -#ifdef __UCLIBC_HAS_TLS__ -MULTIPLE_THREADS_OFFSET offsetof (struct _pthread_descr_struct, p_multiple_threads) - sizeof (struct _pthread_descr_struct) -#else -MULTIPLE_THREADS_OFFSET offsetof (tcbhead_t, multiple_threads) -#endif diff --git a/libpthread/linuxthreads/sysdeps/ia64/tls.h b/libpthread/linuxthreads/sysdeps/ia64/tls.h index c86073f26..a78f0ec7a 100644 --- a/libpthread/linuxthreads/sysdeps/ia64/tls.h +++ b/libpthread/linuxthreads/sysdeps/ia64/tls.h @@ -111,9 +111,6 @@ typedef struct # define TLS_MULTIPLE_THREADS_IN_TCB 1 -/* Get the thread descriptor definition. */ -# include <linuxthreads/descr.h> - # endif #else @@ -128,9 +125,6 @@ typedef struct int multiple_threads; } tcbhead_t; -/* Get the thread descriptor definition. */ -# include <linuxthreads/descr.h> - # define NONTLS_INIT_TP \ do { \ static const tcbhead_t nontls_init_tp = { .multiple_threads = 0 }; \ |