diff options
Diffstat (limited to 'linuxthreads')
-rw-r--r-- | linuxthreads/ChangeLog | 13 | ||||
-rw-r--r-- | linuxthreads/Makefile | 2 | ||||
-rw-r--r-- | linuxthreads/pt-machine.c | 22 | ||||
-rw-r--r-- | linuxthreads/sysdeps/alpha/pt-machine.h | 14 | ||||
-rw-r--r-- | linuxthreads/sysdeps/arm/pt-machine.h | 8 | ||||
-rw-r--r-- | linuxthreads/sysdeps/i386/i686/pt-machine.h | 8 | ||||
-rw-r--r-- | linuxthreads/sysdeps/i386/pt-machine.h | 9 | ||||
-rw-r--r-- | linuxthreads/sysdeps/m68k/pt-machine.h | 10 | ||||
-rw-r--r-- | linuxthreads/sysdeps/mips/pt-machine.h | 14 | ||||
-rw-r--r-- | linuxthreads/sysdeps/powerpc/pt-machine.h | 8 | ||||
-rw-r--r-- | linuxthreads/sysdeps/sparc/sparc32/pt-machine.h | 7 | ||||
-rw-r--r-- | linuxthreads/sysdeps/sparc/sparc64/pt-machine.h | 10 |
12 files changed, 100 insertions, 25 deletions
diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog index c93d485326..8227914557 100644 --- a/linuxthreads/ChangeLog +++ b/linuxthreads/ChangeLog @@ -3,6 +3,19 @@ * sysdeps/i386/i686/pt-machine.h: Remove unused inline definitions. + * Makefile (libpthread-routines): Add pt-machine. + * pt-machine.c: New file. + * sysdeps/alpha/pt-machine.h: Define PT_EI as extern inline is not + yet defined. Use PT_EI in extern inline definitions. + * sysdeps/arm/pt-machine.h: Likewise. + * sysdeps/i386/pt-machine.h: Likewise. + * sysdeps/i386/i686/pt-machine.h: Likewise. + * sysdeps/m68k/pt-machine.h: Likewise. + * sysdeps/mips/pt-machine.h: Likewise. + * sysdeps/powerpc/pt-machine.h: Likewise. + * sysdeps/sparc/sparc32/pt-machine.h: Likewise. + * sysdeps/sparc/sparc64/pt-machine.h: Likewise. + 1998-10-02 Andreas Jaeger <aj@arthur.rhein-neckar.de> * semaphore.h: Include <sys/types.h> so that _pthread_descr diff --git a/linuxthreads/Makefile b/linuxthreads/Makefile index 742be86445..c8da9482b5 100644 --- a/linuxthreads/Makefile +++ b/linuxthreads/Makefile @@ -34,7 +34,7 @@ extra-libs-others := $(extra-libs) libpthread-routines := attr cancel condvar join manager mutex ptfork \ ptlongjmp pthread signals specific errno lockfile \ - semaphore spinlock wrapsyscall rwlock + semaphore spinlock wrapsyscall rwlock pt-machine vpath %.c Examples tests = ex1 ex2 ex3 ex4 ex5 ex6 diff --git a/linuxthreads/pt-machine.c b/linuxthreads/pt-machine.c new file mode 100644 index 0000000000..438008d5d8 --- /dev/null +++ b/linuxthreads/pt-machine.c @@ -0,0 +1,22 @@ +/* "Instantiation of machine-dependent pthreads inline functions. + Copyright (C) 1998 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#define PT_EI + +#include <pt-machine.h> diff --git a/linuxthreads/sysdeps/alpha/pt-machine.h b/linuxthreads/sysdeps/alpha/pt-machine.h index 41b37daf8e..b88629405b 100644 --- a/linuxthreads/sysdeps/alpha/pt-machine.h +++ b/linuxthreads/sysdeps/alpha/pt-machine.h @@ -19,13 +19,18 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#ifndef PT_EI +# define PT_EI extern inline +#endif + #include <asm/pal.h> /* Spinlock implementation; required. */ -extern inline long testandset(int *spinlock) +PT_EI long int +testandset (int *spinlock) { - long ret, temp; + long int ret, temp; __asm__ __volatile__( "/* Inline spinlock test & set */\n" @@ -80,9 +85,10 @@ register char *stack_pointer __asm__("$30"); /* Compare-and-swap for semaphores. */ #define HAS_COMPARE_AND_SWAP -extern inline int __compare_and_swap(long * p, long oldval, long newval) +PT_EI int +__compare_and_swap (long int *p, long int oldval, long int newval) { - long ret; + long int ret; __asm__ __volatile__ ( "/* Inline compare & swap */\n" diff --git a/linuxthreads/sysdeps/arm/pt-machine.h b/linuxthreads/sysdeps/arm/pt-machine.h index 0b9bc01fc1..d4dc4c4ed9 100644 --- a/linuxthreads/sysdeps/arm/pt-machine.h +++ b/linuxthreads/sysdeps/arm/pt-machine.h @@ -1,6 +1,6 @@ /* Machine-dependent pthreads configuration and inline functions. ARM version. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Philip Blundell <philb@gnu.org>. @@ -19,13 +19,17 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#ifndef PT_EI +# define PT_EI extern inline +#endif + /* This will not work on ARM1 or ARM2 because SWP is lacking on those machines. Unfortunately we have no way to detect this at compile time; let's hope nobody tries to use one. */ /* Spinlock implementation; required. */ -extern inline int +PT_EI int testandset (int *spinlock) { register unsigned int ret; diff --git a/linuxthreads/sysdeps/i386/i686/pt-machine.h b/linuxthreads/sysdeps/i386/i686/pt-machine.h index 8c2d794a8c..1b193a0c09 100644 --- a/linuxthreads/sysdeps/i386/i686/pt-machine.h +++ b/linuxthreads/sysdeps/i386/i686/pt-machine.h @@ -19,9 +19,13 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#ifndef PT_EI +# define PT_EI extern inline +#endif + /* Spinlock implementation; required. */ -extern inline int +PT_EI int testandset (int *spinlock) { int ret; @@ -45,7 +49,7 @@ register char * stack_pointer __asm__ ("%esp"); /* Compare-and-swap for semaphores. It's always available on i686. */ #define HAS_COMPARE_AND_SWAP -extern inline int +PT_EI int __compare_and_swap (long int *p, long int oldval, long int newval) { char ret; diff --git a/linuxthreads/sysdeps/i386/pt-machine.h b/linuxthreads/sysdeps/i386/pt-machine.h index 7ed90b7553..364b77c9eb 100644 --- a/linuxthreads/sysdeps/i386/pt-machine.h +++ b/linuxthreads/sysdeps/i386/pt-machine.h @@ -19,9 +19,12 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#ifndef PT_EI +# define PT_EI extern inline +#endif /* Spinlock implementation; required. */ -extern inline int +PT_EI int testandset (int *spinlock) { int ret; @@ -49,7 +52,7 @@ register char * stack_pointer __asm__ ("%esp"); #define HAS_COMPARE_AND_SWAP #define TEST_FOR_COMPARE_AND_SWAP -extern inline int +PT_EI int __compare_and_swap (long int *p, long int oldval, long int newval) { char ret; @@ -78,7 +81,7 @@ set_eflags (int newflags) } -extern inline int +PT_EI int compare_and_swap_is_available (void) { int oldflags = get_eflags (); diff --git a/linuxthreads/sysdeps/m68k/pt-machine.h b/linuxthreads/sysdeps/m68k/pt-machine.h index c5c6cabe35..38ea681143 100644 --- a/linuxthreads/sysdeps/m68k/pt-machine.h +++ b/linuxthreads/sysdeps/m68k/pt-machine.h @@ -1,6 +1,6 @@ /* Machine-dependent pthreads configuration and inline functions. m68k version. - Copyright (C) 1996 Free Software Foundation, Inc. + Copyright (C) 1996, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Richard Henderson <rth@tamu.edu>. @@ -19,9 +19,13 @@ not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#ifndef PT_EI +# define PT_EI extern inline +#endif + /* Spinlock implementation; required. */ -extern inline int +PT_EI int testandset (int *spinlock) { char ret; @@ -44,7 +48,7 @@ register char * stack_pointer __asm__ ("%sp"); /* Compare-and-swap for semaphores. */ #define HAS_COMPARE_AND_SWAP -extern inline int +PT_EI int __compare_and_swap (long int *p, long int oldval, long int newval) { char ret; diff --git a/linuxthreads/sysdeps/mips/pt-machine.h b/linuxthreads/sysdeps/mips/pt-machine.h index d15da7535b..5273923080 100644 --- a/linuxthreads/sysdeps/mips/pt-machine.h +++ b/linuxthreads/sysdeps/mips/pt-machine.h @@ -1,6 +1,6 @@ /* Machine-dependent pthreads configuration and inline functions. - Copyright (C) 1996, 1997 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ralf Baechle <ralf@gnu.ai.mit.edu>. Based on the Alpha version by Richard Henderson <rth@tamu.edu>. @@ -26,11 +26,16 @@ yet correctly. There is however a better solution for R3000 uniprocessor machines possible. */ +#ifndef PT_EI +# define PT_EI extern inline +#endif + /* Spinlock implementation; required. */ -extern inline long testandset(int *spinlock) +PT_EI long int +testandset (int *spinlock) { - long ret, temp; + long int ret, temp; __asm__ __volatile__( "# Inline spinlock test & set\n\t" @@ -61,7 +66,8 @@ register char * stack_pointer __asm__ ("$29"); /* Compare-and-swap for semaphores. */ #define HAS_COMPARE_AND_SWAP -extern inline int __compare_and_swap(long * p, long oldval, long newval) +PT_EI int +__compare_and_swap (long int *p, long int oldval, long int newval) { long ret; diff --git a/linuxthreads/sysdeps/powerpc/pt-machine.h b/linuxthreads/sysdeps/powerpc/pt-machine.h index 7829c779e6..578369a7fe 100644 --- a/linuxthreads/sysdeps/powerpc/pt-machine.h +++ b/linuxthreads/sysdeps/powerpc/pt-machine.h @@ -21,6 +21,10 @@ /* These routines are from Appendix G of the 'PowerPC 601 RISC Microprocessor User's Manual', by IBM and Motorola. */ +#ifndef PT_EI +# define PT_EI extern inline +#endif + /* For multiprocessor systems, we want to ensure all memory accesses are completed before we reset a lock. */ #if 0 @@ -42,10 +46,10 @@ register char * stack_pointer __asm__ ("r1"); #if BROKEN_PPC_ASM_CR0 static #else -extern inline +PT_EI #endif int -__compare_and_swap (long *p, long oldval, long newval) +__compare_and_swap (long int *p, long int oldval, long int newval) { int ret; diff --git a/linuxthreads/sysdeps/sparc/sparc32/pt-machine.h b/linuxthreads/sysdeps/sparc/sparc32/pt-machine.h index ea9685b59d..69af8579aa 100644 --- a/linuxthreads/sysdeps/sparc/sparc32/pt-machine.h +++ b/linuxthreads/sysdeps/sparc/sparc32/pt-machine.h @@ -19,8 +19,13 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#ifndef PT_EI +# define PT_EI extern inline +#endif + /* Spinlock implementation; required. */ -static inline int testandset(int *spinlock) +PT_EI int +testandset (int *spinlock) { int ret; diff --git a/linuxthreads/sysdeps/sparc/sparc64/pt-machine.h b/linuxthreads/sysdeps/sparc/sparc64/pt-machine.h index 768956197d..c4489b3d82 100644 --- a/linuxthreads/sysdeps/sparc/sparc64/pt-machine.h +++ b/linuxthreads/sysdeps/sparc/sparc64/pt-machine.h @@ -19,9 +19,13 @@ not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#ifndef PT_EI +# define PT_EI extern inline +#endif + /* Spinlock implementation; required. */ -extern inline int +PT_EI int testandset (int *spinlock) { int ret; @@ -36,7 +40,7 @@ testandset (int *spinlock) /* Get some notion of the current stack. Need not be exactly the top of the stack, just something somewhere in the current frame. */ #define CURRENT_STACK_FRAME stack_pointer -register char * stack_pointer __asm__ ("%sp"); +register char *stack_pointer __asm__ ("%sp"); /* Registers %g6 and %g7 are reserved by the ABI for "system use". It @@ -54,7 +58,7 @@ register struct _pthread_descr_struct *__thread_self __asm__("%g6"); /* Compare-and-swap for semaphores. */ #define HAS_COMPARE_AND_SWAP -extern inline int +PT_EI int __compare_and_swap (long int *p, long int oldval, long int newval) { long int readval; |