From 9a29bc37328a969d975a4f68c22da36a4d2697c1 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Fri, 9 Oct 1998 11:22:46 +0000 Subject: Update. 1998-10-09 Ulrich Drepper * posix/ptestcases.h: Fix typo. 1998-10-08 Andreas Schwab * posix/regex.c (regcomp): Allocate and prepare a fastmap. (regexec): Allocate regs.start and regs.end as one block. 1998-10-08 Andreas Schwab * sysdeps/unix/sysv/linux/bits/socket.h: Remove comma at end of enum decl. 1998-10-08 Philip Blundell * sysdeps/unix/sysv/linux/arm/profil-counter.h: Move definition of sigcontext union to ... * sysdeps/unix/sysv/linux/arm/bits/armsigctx.h: ... here. New file. * sysdeps/unix/sysv/linux/arm/register-dump.h: Add support for version 2.0 kernels. --- ChangeLog | 23 +++++++++++++++++++++++ linuxthreads/ChangeLog | 13 +++++++++++++ linuxthreads/Makefile | 2 +- linuxthreads/pt-machine.c | 22 ++++++++++++++++++++++ linuxthreads/sysdeps/alpha/pt-machine.h | 14 ++++++++++---- linuxthreads/sysdeps/arm/pt-machine.h | 8 ++++++-- linuxthreads/sysdeps/i386/i686/pt-machine.h | 8 ++++++-- linuxthreads/sysdeps/i386/pt-machine.h | 9 ++++++--- linuxthreads/sysdeps/m68k/pt-machine.h | 10 +++++++--- linuxthreads/sysdeps/mips/pt-machine.h | 14 ++++++++++---- linuxthreads/sysdeps/powerpc/pt-machine.h | 8 ++++++-- linuxthreads/sysdeps/sparc/sparc32/pt-machine.h | 7 ++++++- linuxthreads/sysdeps/sparc/sparc64/pt-machine.h | 10 +++++++--- 13 files changed, 123 insertions(+), 25 deletions(-) create mode 100644 linuxthreads/pt-machine.c diff --git a/ChangeLog b/ChangeLog index 67bc5df..17478e1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,26 @@ +1998-10-09 Ulrich Drepper + + * posix/ptestcases.h: Fix typo. + +1998-10-08 Andreas Schwab + + * posix/regex.c (regcomp): Allocate and prepare a fastmap. + (regexec): Allocate regs.start and regs.end as one block. + +1998-10-08 Andreas Schwab + + * sysdeps/unix/sysv/linux/bits/socket.h: Remove comma at end of + enum decl. + +1998-10-08 Philip Blundell + + * sysdeps/unix/sysv/linux/arm/profil-counter.h: Move definition of + sigcontext union to ... + * sysdeps/unix/sysv/linux/arm/bits/armsigctx.h: ... here. New + file. + * sysdeps/unix/sysv/linux/arm/register-dump.h: Add support for + version 2.0 kernels. + 1998-10-08 Ulrich Drepper * malloc/mtrace.c (tr_reallochook): Produce better output for real diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog index c93d485..8227914 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 * semaphore.h: Include so that _pthread_descr diff --git a/linuxthreads/Makefile b/linuxthreads/Makefile index 742be86..c8da948 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 0000000..438008d --- /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 diff --git a/linuxthreads/sysdeps/alpha/pt-machine.h b/linuxthreads/sysdeps/alpha/pt-machine.h index 41b37da..b886294 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 /* 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 0b9bc01..d4dc4c4 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 . @@ -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 8c2d794..1b193a0 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 7ed90b7..364b77c 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 c5c6cab..38ea681 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 . @@ -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 d15da75..5273923 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 . Based on the Alpha version by Richard Henderson . @@ -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 7829c77..578369a 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 ea9685b..69af857 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 7689561..c4489b3 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; -- cgit v1.1