diff options
Diffstat (limited to 'libpthread/linuxthreads')
13 files changed, 0 insertions, 1214 deletions
| diff --git a/libpthread/linuxthreads/sysdeps/s390/pspinlock.c b/libpthread/linuxthreads/sysdeps/s390/pspinlock.c deleted file mode 100644 index be7578642..000000000 --- a/libpthread/linuxthreads/sysdeps/s390/pspinlock.c +++ /dev/null @@ -1,90 +0,0 @@ -/* POSIX spinlock implementation.  S/390 version. -   Copyright (C) 2000, 2004 Free Software Foundation, Inc. -   Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). -   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 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" - -/* This implementation is similar to the one used in the Linux kernel. -   But the kernel is byte instructions for the memory access.  This is -   faster but unusable here.  The problem is that only 128 -   threads/processes could use the spinlock at the same time.  If (by -   a design error in the program) a thread/process would hold the -   spinlock for a time long enough to accumulate 128 waiting -   processes, the next one will find a positive value in the spinlock -   and assume it is unlocked.  We cannot accept that.  */ - -int -__pthread_spin_lock (pthread_spinlock_t *lock) -{ -  __asm__ __volatile__("    basr  1,0\n" -	       "0:  slr   0,0\n" -	       "    cs    0,1,%1\n" -	       "    jl    0b\n" -	       : "=m" (*lock) -	       : "m" (*lock) : "0", "1", "cc" ); -  return 0; -} -weak_alias (__pthread_spin_lock, pthread_spin_lock) - -int -__pthread_spin_trylock (pthread_spinlock_t *lock) -{ -  int oldval; - -  __asm__ __volatile__("    slr   %1,%1\n" -	       "    basr  1,0\n" -	       "0:  cs    %1,1,%0" -	       : "=m" (*lock), "=&d" (oldval) -	       : "m" (*lock) : "1", "cc" ); -  return oldval == 0 ? 0 : EBUSY; -} -weak_alias (__pthread_spin_trylock, pthread_spin_trylock) - - -int -__pthread_spin_unlock (pthread_spinlock_t *lock) -{ -  __asm__ __volatile__("    xc 0(4,%0),0(%0)\n" -	       "    bcr 15,0" -	       : : "a" (lock) : "memory" ); -  return 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.  */ -  *lock = 0; -  return 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/s390/s390-32/pt-machine.h b/libpthread/linuxthreads/sysdeps/s390/s390-32/pt-machine.h deleted file mode 100644 index 51505a97d..000000000 --- a/libpthread/linuxthreads/sysdeps/s390/s390-32/pt-machine.h +++ /dev/null @@ -1,119 +0,0 @@ -/* Machine-dependent pthreads configuration and inline functions. -   S390 version. -   Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. -   Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). -   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 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/>.  */ - -#ifndef _PT_MACHINE_H -#define _PT_MACHINE_H   1 - -#ifndef PT_EI -# define PT_EI __extern_always_inline -#endif - -extern long int testandset (int *spinlock); -extern int __compare_and_swap (long int *p, long int oldval, long int newval); - -/* For multiprocessor systems, we want to ensure all memory accesses -   are completed before we reset a lock.  On other systems, we still -   need to make sure that the compiler has flushed everything to memory.  */ -#define MEMORY_BARRIER() __asm__ __volatile__ ("bcr 15,0" : : : "memory") - -/* Spinlock implementation; required.  */ -PT_EI long int -testandset (int *spinlock) -{ -  int ret; - -  __asm__ __volatile__( -       "    la    1,%1\n" -       "    lhi   0,1\n" -       "    l     %0,%1\n" -       "0:  cs    %0,0,0(1)\n" -       "    jl    0b" -       : "=&d" (ret), "+m" (*spinlock) -       : : "0", "1", "cc"); - -  return ret; -} - - -/* 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__ ("15"); - -#ifdef __UCLIBC_HAS_TLS__ -/* Return the thread descriptor for the current thread.  */ -# define THREAD_SELF ((pthread_descr) __builtin_thread_pointer ()) - -/* Initialize the thread-unique value.  */ -#define INIT_THREAD_SELF(descr, nr) __builtin_set_thread_pointer (descr) -#else -/* Return the thread descriptor for the current thread. -   S/390 registers uses access register 0 as "thread register".  */ -#define THREAD_SELF  ({                                                       \ -  register pthread_descr __self;                                              \ -  __asm__ ("ear %0,%%a0" : "=d" (__self) );                                   \ -  __self;                                                                     \ -}) - -/* Initialize the thread-unique value.  */ -#define INIT_THREAD_SELF(descr, nr)  ({                                       \ -  __asm__ ("sar %%a0,%0" : : "d" (descr) );                                   \ -}) -#endif - -/* Access to data in the thread descriptor is easy.  */ -#define THREAD_GETMEM(descr, member) \ -  ((void) sizeof (descr), THREAD_SELF->member) -#define THREAD_GETMEM_NC(descr, member) \ -  ((void) sizeof (descr), THREAD_SELF->member) -#define THREAD_SETMEM(descr, member, value) \ -  ((void) sizeof (descr), THREAD_SELF->member = (value)) -#define THREAD_SETMEM_NC(descr, member, value) \ -  ((void) sizeof (descr), THREAD_SELF->member = (value)) - -/* We want the OS to assign stack addresses.  */ -#define FLOATING_STACKS 1 - -/* Maximum size of the stack if the rlimit is unlimited.  */ -#define ARCH_STACK_MAX_SIZE     8*1024*1024 - -/* Compare-and-swap for semaphores. */ - -#define HAS_COMPARE_AND_SWAP - -PT_EI int -__compare_and_swap(long int *p, long int oldval, long int newval) -{ -        int retval; - -        __asm__ __volatile__( -                "  la   1,%1\n" -                "  lr   0,%2\n" -                "  cs   0,%3,0(1)\n" -                "  ipm  %0\n" -                "  srl  %0,28\n" -                "0:" -                : "=&d" (retval), "+m" (*p) -                : "d" (oldval) , "d" (newval) -                : "cc", "0", "1" ); -        return retval == 0; -} - -#endif /* pt-machine.h */ diff --git a/libpthread/linuxthreads/sysdeps/s390/s390-64/pt-machine.h b/libpthread/linuxthreads/sysdeps/s390/s390-64/pt-machine.h deleted file mode 100644 index 4bff85aec..000000000 --- a/libpthread/linuxthreads/sysdeps/s390/s390-64/pt-machine.h +++ /dev/null @@ -1,124 +0,0 @@ -/* Machine-dependent pthreads configuration and inline functions. -   64 bit S/390 version. -   Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. -   Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). -   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 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/>.  */ - -#ifndef _PT_MACHINE_H -#define _PT_MACHINE_H   1 - -#ifndef PT_EI -# define PT_EI __extern_always_inline -#endif - -extern long int testandset (int *spinlock); -extern int __compare_and_swap (long int *p, long int oldval, long int newval); - -/* For multiprocessor systems, we want to ensure all memory accesses -   are completed before we reset a lock.  On other systems, we still -   need to make sure that the compiler has flushed everything to memory.  */ -#define MEMORY_BARRIER() __asm__ __volatile__ ("bcr 15,0" : : : "memory") - -/* Spinlock implementation; required.  */ -PT_EI long int -testandset (int *spinlock) -{ -  int ret; - -  __asm__ __volatile__( -       "    la    1,%1\n" -       "    lhi   0,1\n" -       "    l     %0,%1\n" -       "0:  cs    %0,0,0(1)\n" -       "    jl    0b" -       : "=&d" (ret), "+m" (*spinlock) -       : : "0", "1", "cc"); - -  return ret; -} - - -/* 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__ ("15"); - -#ifdef __UCLIBC_HAS_TLS__ -/* Return the thread descriptor for the current thread.  */ -# define THREAD_SELF ((pthread_descr) __builtin_thread_pointer ()) - -/* Initialize the thread-unique value.  */ -#define INIT_THREAD_SELF(descr, nr) __builtin_set_thread_pointer (descr) -#else -/* Return the thread descriptor for the current thread. -   64 bit S/390 uses access register 0 and 1 as "thread register".  */ -#define THREAD_SELF  ({                                                       \ -  register pthread_descr __self;                                              \ -  __asm__ ("   ear  %0,%%a0\n"                                                \ -           "   sllg %0,%0,32\n"                                               \ -           "   ear  %0,%%a1\n"                                                \ -           : "=d" (__self) );                                                 \ -  __self;                                                                     \ -}) - -/* Initialize the thread-unique value.  */ -#define INIT_THREAD_SELF(descr, nr)  ({                                       \ -  __asm__ ("   sar  %%a1,%0\n"                                                \ -           "   srlg 0,%0,32\n"                                                \ -           "   sar  %%a0,0\n"                                                 \ -           : : "d" (descr) : "0" );                                           \ -}) -#endif - -/* Access to data in the thread descriptor is easy.  */ -#define THREAD_GETMEM(descr, member) \ -  ((void) sizeof (descr), THREAD_SELF->member) -#define THREAD_GETMEM_NC(descr, member) \ -  ((void) sizeof (descr), THREAD_SELF->member) -#define THREAD_SETMEM(descr, member, value) \ -  ((void) sizeof (descr), THREAD_SELF->member = (value)) -#define THREAD_SETMEM_NC(descr, member, value) \ -  ((void) sizeof (descr), THREAD_SELF->member = (value)) - -/* We want the OS to assign stack addresses.  */ -#define FLOATING_STACKS 1 - -/* Maximum size of the stack if the rlimit is unlimited.  */ -#define ARCH_STACK_MAX_SIZE     8*1024*1024 - -/* Compare-and-swap for semaphores. */ - -#define HAS_COMPARE_AND_SWAP - -PT_EI int -__compare_and_swap(long int *p, long int oldval, long int newval) -{ -        int retval; - -        __asm__ __volatile__( -                "  lgr  0,%2\n" -                "  csg  0,%3,%1\n" -                "  ipm  %0\n" -                "  srl  %0,28\n" -                "0:" -                : "=&d" (retval), "+m" (*p) -                : "d" (oldval) , "d" (newval) -                : "cc", "0"); -        return retval == 0; -} - -#endif /* pt-machine.h */ diff --git a/libpthread/linuxthreads/sysdeps/s390/tcb-offsets.sym b/libpthread/linuxthreads/sysdeps/s390/tcb-offsets.sym deleted file mode 100644 index aee6be257..000000000 --- a/libpthread/linuxthreads/sysdeps/s390/tcb-offsets.sym +++ /dev/null @@ -1,4 +0,0 @@ -#include <sysdep.h> -#include <tls.h> - -MULTIPLE_THREADS_OFFSET		offsetof (tcbhead_t, multiple_threads) diff --git a/libpthread/linuxthreads/sysdeps/s390/tls.h b/libpthread/linuxthreads/sysdeps/s390/tls.h deleted file mode 100644 index d987bdbc2..000000000 --- a/libpthread/linuxthreads/sysdeps/s390/tls.h +++ /dev/null @@ -1,144 +0,0 @@ -/* Definitions for thread-local data handling.  linuxthreads/s390 version. -   Copyright (C) 2002, 2003, 2005 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 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 _TLS_H -#define _TLS_H - -#ifndef __ASSEMBLER__ - -# include <pt-machine.h> -# include <stdbool.h> -# include <stddef.h> - -/* Type for the dtv.  */ -typedef union dtv -{ -  size_t counter; -  struct -  { -    void *val; -    bool is_static; -  } pointer; -} dtv_t; - -typedef struct -{ -  void *tcb;		/* Pointer to the TCB.  Not necessary the -			   thread descriptor used by libpthread.  */ -  dtv_t *dtv; -  void *self;		/* Pointer to the thread descriptor.  */ -  int multiple_threads; -} tcbhead_t; - -#else /* __ASSEMBLER__ */ -# include <tcb-offsets.h> -#endif /* __ASSEMBLER__ */ - -/* TLS is always supported if the tools support it.  There are no -   kernel dependencies.  To avoid bothering with the TLS support code -   at all, use configure --without-tls. - -   We need USE_TLS to be consistently defined, for ldsodefs.h -   conditionals.  */ - -#ifdef HAVE_TLS_SUPPORT - -/* Signal that TLS support is available.  */ -# define USE_TLS	1 - -# ifndef __ASSEMBLER__ -/* Get system call information.  */ -#  include <sysdep.h> - - -/* Get the thread descriptor definition.  */ -#  include <linuxthreads/descr.h> - -/* This is the size of the initial TCB.  */ -#  define TLS_INIT_TCB_SIZE sizeof (tcbhead_t) - -/* Alignment requirements for the initial TCB.  */ -#  define TLS_INIT_TCB_ALIGN __alignof__ (tcbhead_t) - -/* This is the size of the TCB.  */ -#  define TLS_TCB_SIZE sizeof (struct _pthread_descr_struct) - -/* Alignment requirements for the TCB.  */ -#  define TLS_TCB_ALIGN __alignof__ (struct _pthread_descr_struct) - -/* The TCB can have any size and the memory following the address the -   thread pointer points to is unspecified.  Allocate the TCB there.  */ -#  define TLS_TCB_AT_TP	1 - - -/* Install the dtv pointer.  The pointer passed is to the element with -   index -1 which contain the length.  */ -#  define INSTALL_DTV(descr, dtvp) \ -  ((tcbhead_t *) (descr))->dtv = (dtvp) + 1 - -/* Install new dtv for current thread.  */ -#  define INSTALL_NEW_DTV(dtv) \ -  (((tcbhead_t *) __builtin_thread_pointer ())->dtv = (dtv)) - -/* Return dtv of given thread descriptor.  */ -#  define GET_DTV(descr) \ -  (((tcbhead_t *) (descr))->dtv) - -/* Code to initially initialize the thread pointer.  This might need -   special attention since 'errno' is not yet available and if the -   operation can cause a failure 'errno' must not be touched. - -   The value of this macro is null if successful, or an error string.  */ -#  define TLS_INIT_TP(descr, secondcall)				      \ -  ({									      \ -    void *_descr = (descr);						      \ -    tcbhead_t *head = _descr;						      \ -									      \ -    head->tcb = _descr;							      \ -    /* For now the thread descriptor is at the same address.  */	      \ -    head->self = _descr;						      \ -									      \ -    __builtin_set_thread_pointer (_descr);				      \ -    NULL;								      \ -  }) - -/* Return the address of the dtv for the current thread.  */ -#  define THREAD_DTV() \ -  (((tcbhead_t *) __builtin_thread_pointer ())->dtv) - -# endif /* __ASSEMBLER__ */ - -#else	/* HAVE_TLS_SUPPORT && (FLOATING_STACKS || !IS_IN_libpthread) */ - -# ifndef __ASSEMBLER__ - -/* Get the thread descriptor definition.  */ -#  include <linuxthreads/descr.h> - -#  define NONTLS_INIT_TP \ -  do { 								\ -    static const tcbhead_t nontls_init_tp			\ -      = { .multiple_threads = 0 };				\ -    INIT_THREAD_SELF (&nontls_init_tp, 0);			\ -  } while (0) - -# endif /* __ASSEMBLER__ */ - -#endif	/* HAVE_TLS_SUPPORT && (FLOATING_STACKS || !IS_IN_libpthread) */ - -#endif	/* tls.h */ diff --git a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/bits/typesizes.h b/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/bits/typesizes.h deleted file mode 100644 index 6b588257d..000000000 --- a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/bits/typesizes.h +++ /dev/null @@ -1,71 +0,0 @@ -/* bits/typesizes.h -- underlying types for *_t.  Linux/s390 version. -   Copyright (C) 2003 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 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 _BITS_TYPES_H -# error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead." -#endif - -#ifndef	_BITS_TYPESIZES_H -#define	_BITS_TYPESIZES_H	1 - -/* See <bits/types.h> for the meaning of these macros.  This file exists so -   that <bits/types.h> need not vary across different GNU platforms.  */ - -#define __DEV_T_TYPE		__UQUAD_TYPE -#define __UID_T_TYPE		__U32_TYPE -#define __GID_T_TYPE		__U32_TYPE -#define __INO_T_TYPE		__ULONGWORD_TYPE -#define __INO64_T_TYPE		__UQUAD_TYPE -#define __MODE_T_TYPE		__U32_TYPE -#define __NLINK_T_TYPE		__UWORD_TYPE -#define __OFF_T_TYPE		__SLONGWORD_TYPE -#define __OFF64_T_TYPE		__SQUAD_TYPE -#define __PID_T_TYPE		__S32_TYPE -#define __RLIM_T_TYPE		__ULONGWORD_TYPE -#define __RLIM64_T_TYPE		__UQUAD_TYPE -#define	__BLKCNT_T_TYPE		__SLONGWORD_TYPE -#define	__BLKCNT64_T_TYPE	__SQUAD_TYPE -#define	__FSBLKCNT_T_TYPE	__ULONGWORD_TYPE -#define	__FSBLKCNT64_T_TYPE	__UQUAD_TYPE -#define	__FSFILCNT_T_TYPE	__ULONGWORD_TYPE -#define	__FSFILCNT64_T_TYPE	__UQUAD_TYPE -#define	__ID_T_TYPE		__U32_TYPE -#define __CLOCK_T_TYPE		__SLONGWORD_TYPE -#define __TIME_T_TYPE		__SLONGWORD_TYPE -#define __USECONDS_T_TYPE	__U32_TYPE -#define __SUSECONDS_T_TYPE	__SLONGWORD_TYPE -#define __DADDR_T_TYPE		__S32_TYPE -#define __SWBLK_T_TYPE		__SLONGWORD_TYPE -#define __KEY_T_TYPE		__S32_TYPE -#define __CLOCKID_T_TYPE	__S32_TYPE -#define __TIMER_T_TYPE		__S32_TYPE -#define __BLKSIZE_T_TYPE	__SLONGWORD_TYPE -#define __FSID_T_TYPE		struct { int __val[2]; } -#if defined __GNUC__ && __GNUC__ <= 2 -/* Compatibility with g++ 2.95.x.  */ -#define __SSIZE_T_TYPE		__SWORD_TYPE -#else -/* size_t is unsigned long int on s390 -m31.  */ -#define __SSIZE_T_TYPE		__SLONGWORD_TYPE -#endif - -/* Number of descriptors that can fit in an `fd_set'.  */ -#define	__FD_SETSIZE		1024 - - -#endif /* bits/typesizes.h */ diff --git a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c b/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c deleted file mode 100644 index cde418307..000000000 --- a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c +++ /dev/null @@ -1,153 +0,0 @@ -/* Special .init and .fini section support for S/390. -   Copyright (C) 2000, 2001 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 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. - -   In addition to the permissions in the GNU Lesser General Public -   License, the Free Software Foundation gives you unlimited -   permission to link the compiled version of this file with other -   programs, and to distribute those programs without any restriction -   coming from the use of this file.  (The Lesser General Public -   License restrictions do apply in other respects; for example, they -   cover modification of the file, and distribution when not linked -   into another program.) - -   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/>.  */ - -/* This file is compiled into assembly code which is then munged by a sed -   script into two files: crti.s and crtn.s. - -   * crti.s puts a function prologue at the beginning of the -   .init and .fini sections and defines global symbols for -   those addresses, so they can be called as functions. - -   * crtn.s puts the corresponding function epilogues -   in the .init and .fini sections. */ - -__asm__ ("\ -\n\ -#include \"defs.h\"\n\ -\n\ -/*@HEADER_ENDS*/\n\ -\n\ -/*@TESTS_BEGIN*/\n\ -\n\ -/*@TESTS_END*/\n\ -\n\ -/*@_init_PROLOG_BEGINS*/\n\ -\n\ -	.section .init\n\ -#NO_APP\n\ -	.align 4\n\ -.globl _init\n\ -	.type	 _init,@function\n\ -_init:\n\ -#	leaf function           0\n\ -#	automatics              0\n\ -#	outgoing args           0\n\ -#	need frame pointer      0\n\ -#	call alloca             0\n\ -#	has varargs             0\n\ -#	incoming args (stack)   0\n\ -#	function length         36\n\ -	STM	6,15,24(15)\n\ -	BRAS	13,.LTN1_0\n\ -.LT1_0:\n\ -.LC13:\n\ -	.long	__pthread_initialize_minimal@PLT-.LT1_0\n\ -.LC14:\n\ -	.long	__gmon_start__@GOT\n\ -.LC15:\n\ -	.long	_GLOBAL_OFFSET_TABLE_-.LT1_0\n\ -.LTN1_0:\n\ -	LR	1,15\n\ -	AHI	15,-96\n\ -	ST	1,0(15)\n\ -	L	12,.LC15-.LT1_0(13)\n\ -	AR	12,13\n\ -	L     1,.LC13-.LT1_0(13)\n\ -	LA    1,0(1,13)\n\ -	BASR  14,1\n\ -	L     1,.LC14-.LT1_0(13)\n\ -	L     1,0(1,12)\n\ -	LTR   1,1\n\ -	JE    .L22\n\ -	BASR  14,1\n\ -.L22:\n\ -#APP\n\ -	.align 4,0x07\n\ -	END_INIT\n\ -\n\ -/*@_init_PROLOG_ENDS*/\n\ -\n\ -/*@_init_EPILOG_BEGINS*/\n\ -	.align 4\n\ -	.section .init\n\ -#NO_APP\n\ -	.align 4\n\ -	L	4,152(15)\n\ -	LM	6,15,120(15)\n\ -	BR	4\n\ -#APP\n\ -	END_INIT\n\ -\n\ -/*@_init_EPILOG_ENDS*/\n\ -\n\ -/*@_fini_PROLOG_BEGINS*/\n\ -	.section .fini\n\ -#NO_APP\n\ -	.align 4\n\ -.globl _fini\n\ -	.type	 _fini,@function\n\ -_fini:\n\ -#	leaf function           0\n\ -#	automatics              0\n\ -#	outgoing args           0\n\ -#	need frame pointer      0\n\ -#	call alloca             0\n\ -#	has varargs             0\n\ -#	incoming args (stack)   0\n\ -#	function length         30\n\ -	STM	6,15,24(15)\n\ -	BRAS	13,.LTN2_0\n\ -.LT2_0:\n\ -.LC17:\n\ -	.long	_GLOBAL_OFFSET_TABLE_-.LT2_0\n\ -.LTN2_0:\n\ -	LR	1,15\n\ -	AHI	15,-96\n\ -	ST	1,0(15)\n\ -	L	12,.LC17-.LT2_0(13)\n\ -	AR	12,13\n\ -#APP\n\ -	.align 4,0x07\n\ -	END_FINI\n\ -\n\ -/*@_fini_PROLOG_ENDS*/\n\ -\n\ -/*@_fini_EPILOG_BEGINS*/\n\ -	.align 4\n\ -	.section .fini\n\ -#NO_APP\n\ -	.align 4\n\ -	L	4,152(15)\n\ -	LM	6,15,120(15)\n\ -	BR	4\n\ -#APP\n\ -	END_FINI\n\ -\n\ -/*@_fini_EPILOG_ENDS*/\n\ -\n\ -/*@TRAILER_BEGINS*/\ -"); diff --git a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h b/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h deleted file mode 100644 index 2431129e5..000000000 --- a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h +++ /dev/null @@ -1,136 +0,0 @@ -/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. -   This file is part of the GNU C Library. -   Contributed by Jakub Jelinek <jakub@redhat.com>, 2003. - -   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/>.  */ - -#include <sysdep.h> -#include <tls.h> -#ifndef __ASSEMBLER__ -# include <linuxthreads/internals.h> -#endif - -#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt - -# if !defined NOT_IN_libc || defined IS_IN_libpthread - -#  define PSEUDO_CANCEL(name, syscall_name, args)			      \ -L(pseudo_cancel):							      \ -	STM_##args							      \ -	stm	%r12,%r15,48(%r15);					      \ -	lr	%r14,%r15;						      \ -	ahi	%r15,-96;						      \ -	st	%r14,0(%r15);						      \ -	basr    %r13,0;							      \ -0:	l	%r1,1f-0b(%r13);					      \ -	bas	%r14,0(%r1,%r13);					      \ -	lr	%r0,%r2;						      \ -	LM_##args							      \ -	DO_CALL(syscall_name, args);					      \ -	l	%r1,2f-0b(%r13);					      \ -	lr	%r12,%r2;						      \ -	lr	%r2,%r0;						      \ -	bas	%r14,0(%r1,%r13);					      \ -	lr	%r2,%r12;						      \ -	lm	%r12,%r15,48+96(%r15);					      \ -	j	L(pseudo_check);					      \ -1:	.long	CENABLE-0b;						      \ -2:	.long	CDISABLE-0b; - -# else /* !libc.so && !libpthread.so */ - -#  define PSEUDO_CANCEL(name, syscall_name, args)			      \ -L(pseudo_cancel):							      \ -	STM_##args							      \ -	stm	%r11,%r15,44(%r15);					      \ -	lr	%r14,%r15;						      \ -	ahi	%r15,-96;						      \ -	st	%r14,0(%r15);						      \ -	basr    %r13,0;							      \ -0:	l	%r12,3f-0b(%r13);					      \ -	l	%r1,1f-0b(%r13);					      \ -	la	%r12,0(%r12,%r13);					      \ -	bas	%r14,0(%r1,%r13);					      \ -	lr	%r0,%r2;						      \ -	LM_##args							      \ -	DO_CALL(syscall_name, args);					      \ -	l	%r1,2f-0b(%r13);					      \ -	lr	%r11,%r2;						      \ -	lr	%r2,%r0;						      \ -	bas	%r14,0(%r1,%r13);					      \ -	lr	%r2,%r11;						      \ -	lm	%r11,%r15,44+96(%r15);					      \ -	j	L(pseudo_check);					      \ -1:	.long	CENABLE@PLT-0b;						      \ -2:	.long	CDISABLE@PLT-0b;					      \ -3:	.long	_GLOBAL_OFFSET_TABLE_-0b; - -# endif - -# undef PSEUDO -# define PSEUDO(name, syscall_name, args)				      \ -	.text;								      \ -PSEUDO_CANCEL(name, syscall_name, args)					      \ -ENTRY(name)								      \ -	SINGLE_THREAD_P(%r1)						      \ -	jne	L(pseudo_cancel);					      \ -	DO_CALL(syscall_name, args);					      \ -L(pseudo_check):							      \ -	lhi	%r4,-4095;						      \ -	clr	%r2,%r4;						      \ -	jnl	SYSCALL_ERROR_LABEL;					      \ -L(pseudo_end): - -# ifdef IS_IN_libpthread -#  define CENABLE	__pthread_enable_asynccancel -#  define CDISABLE	__pthread_disable_asynccancel -# elif !defined NOT_IN_libc -#  define CENABLE	__libc_enable_asynccancel -#  define CDISABLE	__libc_disable_asynccancel -# else -#  define CENABLE	__librt_enable_asynccancel -#  define CDISABLE	__librt_disable_asynccancel -# endif - -#define STM_0		/* Nothing */ -#define STM_1		st %r2,8(%r15); -#define STM_2		stm %r2,%r3,8(%r15); -#define STM_3		stm %r2,%r4,8(%r15); -#define STM_4		stm %r2,%r5,8(%r15); -#define STM_5		stm %r2,%r5,8(%r15); - -#define LM_0		/* Nothing */ -#define LM_1		l %r2,8+96(%r15); -#define LM_2		lm %r2,%r3,8+96(%r15); -#define LM_3		lm %r2,%r4,8+96(%r15); -#define LM_4		lm %r2,%r5,8+96(%r15); -#define LM_5		lm %r2,%r5,8+96(%r15); - -# ifndef __ASSEMBLER__ -#  define SINGLE_THREAD_P \ -  __builtin_expect (THREAD_GETMEM (THREAD_SELF,				      \ -				   p_header.data.multiple_threads) == 0, 1) -# else -#  define SINGLE_THREAD_P(reg) \ -	ear	reg,%a0;						      \ -	icm	reg,15,MULTIPLE_THREADS_OFFSET(reg); -# endif - -#elif !defined __ASSEMBLER__ - -/* This code should never be used but we define it anyhow.  */ -# define SINGLE_THREAD_P (1) - -#endif diff --git a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S b/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S deleted file mode 100644 index 078c730fd..000000000 --- a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S +++ /dev/null @@ -1,68 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. -   This file is part of the GNU C Library. -   Contributed by Martin Schwidefsky <schwidefsky@de.ibm.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; if not, see -   <http://www.gnu.org/licenses/>.  */ - -#include <sysdep-cancel.h> -#define _ERRNO_H	1 -#include <bits/errno.h> - -/* Clone the calling process, but without copying the whole address space. -   The calling process is suspended until the new process exits or is -   replaced by a call to `execve'.  Return -1 for errors, 0 to the new process, -   and the process ID of the new process to the old process.  */ - -ENTRY (__vfork) -	basr	%r1,0 -0: -#ifdef SHARED -	al	%r1,4f-0b(%r1) -	l	%r1,0(%r1) -	ltr	%r1,%r1 -#else -	icm	%r1,15,4f-0b(%r1) -#endif -	jne	1f - -	/* Do vfork system call.  */ -	svc	SYS_ify (vfork) - -	/* Check for error.  */ -	lhi	%r4,-4095 -	clr	%r2,%r4 -	jnl	SYSCALL_ERROR_LABEL - -	/* Normal return.  */ -	br	%r14 -1: -	basr	%r1,0 -2: -	al	%r1,3f-2b(%r1) -	br	%r1 -3: -	.long	HIDDEN_JUMPTARGET(fork)-2b -4: -#ifdef SHARED -	.long	__libc_pthread_functions-0b -#else -	.weak	pthread_create -	.long	pthread_create -#endif -PSEUDO_END(__vfork) - -libc_hidden_def (__vfork) - -weak_alias (__vfork, vfork) diff --git a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c b/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c deleted file mode 100644 index 136ce5442..000000000 --- a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c +++ /dev/null @@ -1,136 +0,0 @@ -/* Special .init and .fini section support for 64 bit S/390. -   Copyright (C) 2001 Free Software Foundation, Inc. -   Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). -   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 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. - -   In addition to the permissions in the GNU Lesser General Public -   License, the Free Software Foundation gives you unlimited -   permission to link the compiled version of this file with other -   programs, and to distribute those programs without any restriction -   coming from the use of this file.  (The Lesser General Public -   License restrictions do apply in other respects; for example, they -   cover modification of the file, and distribution when not linked -   into another program.) - -   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/>.  */ - -/* This file is compiled into assembly code which is then munged by a sed -   script into two files: crti.s and crtn.s. - -   * crti.s puts a function prologue at the beginning of the -   .init and .fini sections and defines global symbols for -   those addresses, so they can be called as functions. - -   * crtn.s puts the corresponding function epilogues -   in the .init and .fini sections. */ - -__asm__ ("\ -\n\ -#include \"defs.h\"\n\ -\n\ -/*@HEADER_ENDS*/\n\ -\n\ -/*@TESTS_BEGIN*/\n\ -\n\ -/*@TESTS_END*/\n\ -\n\ -/*@_init_PROLOG_BEGINS*/\n\ -\n\ -	.section .init\n\ -#NO_APP\n\ -	.align 4\n\ -.globl _init\n\ -	.type	 _init,@function\n\ -_init:\n\ -#	leaf function           0\n\ -#	automatics              0\n\ -#	outgoing args           0\n\ -#	need frame pointer      0\n\ -#	call alloca             0\n\ -#	has varargs             0\n\ -#	incoming args (stack)   0\n\ -#	function length         36\n\ -	STMG	6,15,48(15)\n\ -	LGR	1,15\n\ -	AGHI	15,-160\n\ -	STG	1,0(15)\n\ -	LARL	12,_GLOBAL_OFFSET_TABLE_\n\ -	BRASL	14,__pthread_initialize_minimal@PLT\n\ -	LARL	1,__gmon_start__@GOTENT\n\ -	LG	1,0(1)\n\ -	LTGR	1,1\n\ -	JE	.L22\n\ -	BASR	14,1\n\ -.L22:\n\ -#APP\n\ -	.align 4,0x07\n\ -	END_INIT\n\ -\n\ -/*@_init_PROLOG_ENDS*/\n\ -\n\ -/*@_init_EPILOG_BEGINS*/\n\ -	.align 4\n\ -	.section .init\n\ -#NO_APP\n\ -	.align 4\n\ -	LG	4,272(15)\n\ -	LMG	6,15,208(15)\n\ -	BR	4\n\ -#APP\n\ -	END_INIT\n\ -\n\ -/*@_init_EPILOG_ENDS*/\n\ -\n\ -/*@_fini_PROLOG_BEGINS*/\n\ -	.section .fini\n\ -#NO_APP\n\ -	.align 4\n\ -.globl _fini\n\ -	.type	 _fini,@function\n\ -_fini:\n\ -#	leaf function           0\n\ -#	automatics              0\n\ -#	outgoing args           0\n\ -#	need frame pointer      0\n\ -#	call alloca             0\n\ -#	has varargs             0\n\ -#	incoming args (stack)   0\n\ -#	function length         30\n\ -	STMG	6,15,48(15)\n\ -	LGR	1,15\n\ -	AGHI	15,-160\n\ -	STG	1,0(15)\n\ -	LARL	12,_GLOBAL_OFFSET_TABLE_\n\ -#APP\n\ -	.align 4,0x07\n\ -	END_FINI\n\ -\n\ -/*@_fini_PROLOG_ENDS*/\n\ -\n\ -/*@_fini_EPILOG_BEGINS*/\n\ -	.align 4\n\ -	.section .fini\n\ -#NO_APP\n\ -	.align 4\n\ -	LG	4,272(15)\n\ -	LMG	6,15,208(15)\n\ -	BR	4\n\ -#APP\n\ -	END_FINI\n\ -\n\ -/*@_fini_EPILOG_ENDS*/\n\ -\n\ -/*@TRAILER_BEGINS*/\n\ -	"); diff --git a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-sigsuspend.c b/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-sigsuspend.c deleted file mode 100644 index d57283ad2..000000000 --- a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-sigsuspend.c +++ /dev/null @@ -1 +0,0 @@ -#include "../../ia64/pt-sigsuspend.c" diff --git a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h b/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h deleted file mode 100644 index cf3124ebb..000000000 --- a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h +++ /dev/null @@ -1,115 +0,0 @@ -/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. -   This file is part of the GNU C Library. -   Contributed by Jakub Jelinek <jakub@redhat.com>, 2003. - -   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/>.  */ - -#include <sysdep.h> -#include <tls.h> -#ifndef __ASSEMBLER__ -# include <linuxthreads/internals.h> -#endif - -#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt - -# undef PSEUDO -# define PSEUDO(name, syscall_name, args)				      \ -	.text;								      \ -L(pseudo_cancel):							      \ -	STM_##args							      \ -	stmg	%r13,%r15,104(%r15);					      \ -	lgr	%r14,%r15;						      \ -	aghi	%r15,-160;						      \ -	stg	%r14,0(%r15);						      \ -	brasl	%r14,CENABLE;						      \ -	lgr	%r0,%r2;						      \ -	LM_##args							      \ -	DO_CALL(syscall_name, args);					      \ -	lgr	%r13,%r2;						      \ -	lgr	%r2,%r0;						      \ -	brasl	%r14,CDISABLE;						      \ -	lgr	%r2,%r13;						      \ -	lmg	%r13,%r15,104+160(%r15);				      \ -	j	L(pseudo_check);					      \ -ENTRY(name)								      \ -	SINGLE_THREAD_P							      \ -	jne	L(pseudo_cancel);					      \ -	DO_CALL(syscall_name, args);					      \ -L(pseudo_check):							      \ -	lghi	%r4,-4095;						      \ -	clgr	%r2,%r4;						      \ -	jgnl	SYSCALL_ERROR_LABEL;					      \ -L(pseudo_end): - -# ifdef IS_IN_libpthread -#  define CENABLE	__pthread_enable_asynccancel -#  define CDISABLE	__pthread_disable_asynccancel -#  define __local_multiple_threads	__pthread_multiple_threads -# elif !defined NOT_IN_libc -#  define CENABLE	__libc_enable_asynccancel -#  define CDISABLE	__libc_disable_asynccancel -#  define __local_multiple_threads	__libc_multiple_threads -# else -#  define CENABLE	__librt_enable_asynccancel@PLT -#  define CDISABLE	__librt_disable_asynccancel@PLT -# endif - -#define STM_0		/* Nothing */ -#define STM_1		stg %r2,16(%r15); -#define STM_2		stmg %r2,%r3,16(%r15); -#define STM_3		stmg %r2,%r4,16(%r15); -#define STM_4		stmg %r2,%r5,16(%r15); -#define STM_5		stmg %r2,%r5,16(%r15); - -#define LM_0		/* Nothing */ -#define LM_1		lg %r2,16+160(%r15); -#define LM_2		lmg %r2,%r3,16+160(%r15); -#define LM_3		lmg %r2,%r4,16+160(%r15); -#define LM_4		lmg %r2,%r5,16+160(%r15); -#define LM_5		lmg %r2,%r5,16+160(%r15); - -# if !defined NOT_IN_libc || defined IS_IN_libpthread -#  ifndef __ASSEMBLER__ -extern int __local_multiple_threads attribute_hidden; -#   define SINGLE_THREAD_P \ -  __builtin_expect (__local_multiple_threads == 0, 1) -#  else -#   define SINGLE_THREAD_P \ -	larl	%r1,__local_multiple_threads;				      \ -	icm	%r0,15,0(%r1); -#  endif - -# else - -#  ifndef __ASSEMBLER__ -#   define SINGLE_THREAD_P \ -  __builtin_expect (THREAD_GETMEM (THREAD_SELF,				      \ -				   p_header.data.multiple_threads) == 0, 1) -#  else -#   define SINGLE_THREAD_P \ -	ear	%r1,%a0;						      \ -	sllg	%r1,%r1,32;						      \ -	ear	%r1,%a1;						      \ -	icm	%r1,15,MULTIPLE_THREADS_OFFSET(%r1); -#  endif - -# endif - -#elif !defined __ASSEMBLER__ - -/* This code should never be used but we define it anyhow.  */ -# define SINGLE_THREAD_P (1) - -#endif diff --git a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S b/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S deleted file mode 100644 index 109d4f6dc..000000000 --- a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S +++ /dev/null @@ -1,53 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. -   This file is part of the GNU C Library. -   Contributed by Martin Schwidefsky <schwidefsky@de.ibm.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; if not, see -   <http://www.gnu.org/licenses/>.  */ - -#include <sysdep-cancel.h> -#define _ERRNO_H	1 -#include <bits/errno.h> - -/* Clone the calling process, but without copying the whole address space. -   The calling process is suspended until the new process exits or is -   replaced by a call to `execve'.  Return -1 for errors, 0 to the new process, -   and the process ID of the new process to the old process.  */ - -ENTRY (__vfork) -#ifdef SHARED -	larl	%r1,__libc_pthread_functions -	lg	%r1,0(%r1) -#else -	.weak	pthread_create -	larl	%r1,pthread_create -#endif -	ltgr	%r1,%r1 -	jgne	HIDDEN_JUMPTARGET(fork) - -	/* Do vfork system call.  */ -	svc	SYS_ify (vfork) - -	/* Check for error.  */ -	lghi	%r4,-4095 -	clgr	%r2,%r4 -	jgnl	SYSCALL_ERROR_LABEL - -	/* Normal return.  */ -	br	%r14 -PSEUDO_END(__vfork) - -libc_hidden_def (__vfork) - -weak_alias (__vfork, vfork) | 
