diff options
21 files changed, 9 insertions, 491 deletions
| diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/pt-vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/pt-vfork.S deleted file mode 100644 index a6005c1ab..000000000 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/pt-vfork.S +++ /dev/null @@ -1,42 +0,0 @@ -/* Copyright (C) 2003, 2004 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/>.  */ - -#include <sysdep.h> -#include <tcb-offsets.h> - -#undef PSEUDO_PREPARE_ARGS -#define PSEUDO_PREPARE_ARGS						\ -	/* Load the current cached pid value across the vfork.  */	\ -	rduniq;								\ -	ldl	a2, PID_OFFSET(v0);					\ -	mov	v0, a1;							\ -	/* Write back its negation, to indicate that the pid value is	\ -	   uninitialized in the the child, and in the window between	\ -	   here and the point at which we restore the value.  */	\ -	negl	a2, t0;							\ -	stl	t0, PID_OFFSET(v0); - -PSEUDO (__vfork, vfork, 0) - -	/* If we're back in the parent, restore the saved pid.  */ -	beq	v0, 1f -	stl	a2, PID_OFFSET(a1) -1:	ret - -PSEUDO_END (__vfork) - -weak_alias (__vfork, vfork) diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/arc/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/arc/Makefile.arch index 8e3c7b0bc..3b9db6a61 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/arc/Makefile.arch +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/arc/Makefile.arch @@ -5,7 +5,7 @@  # Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.  # -libpthread_linux_arch_SSRC = pt-vfork.S +libpthread_linux_arch_SSRC =  libpthread_linux_arch_CSRC = pthread_once.c lowlevellock.c \  	pt-__syscall_rt_sigaction.c pt-__syscall_error.c diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/arc/pt-vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/arc/pt-vfork.S deleted file mode 100644 index f222dca43..000000000 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/arc/pt-vfork.S +++ /dev/null @@ -1,7 +0,0 @@ -/* - * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com) - * - * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball. - */ - -#include "vfork.S" diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/arm/Makefile.arch index c8d5d4ab5..e61072eb8 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/Makefile.arch +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/arm/Makefile.arch @@ -5,7 +5,7 @@  # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.  # -libpthread_linux_arch_SSRC = pt-vfork.S +libpthread_linux_arch_SSRC =  libpthread_linux_arch_CSRC = pthread_once.c \  	pt-__syscall_rt_sigaction.c pt-__syscall_error.c \  	lowlevellock.c diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/pt-vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/arm/pt-vfork.S deleted file mode 100644 index df18f0304..000000000 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/pt-vfork.S +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright (C) 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/>.  */ - -#include <tcb-offsets.h> - -/* Save the PID value.  */ -#define SAVE_PID \ -	str	lr, [sp, #-4]!;		/* Save LR.  */			\ -	mov	r0, #0xffff0fff;	/* Point to the high page.  */	\ -	mov	lr, pc;			/* Save our return address.  */	\ -	sub	pc, r0, #31;		/* Jump to the TLS entry.  */	\ -	ldr	lr, [sp], #4;		/* Restore LR.  */		\ -	mov	r2, r0;			/* Save the TLS addr in r2.  */	\ -	ldr	r3, [r2, #PID_OFFSET];	/* Load the saved PID.  */	\ -	rsb	r0, r3, #0;		/* Negate it.  */		\ -	str	r0, [r2, #PID_OFFSET]	/* Store the temporary PID.  */ - -/* Restore the old PID value in the parent.  */ -#define RESTORE_PID \ -	cmp	r0, #0;			/* If we are the parent... */	\ -	strne	r3, [r2, #PID_OFFSET]	/* ... restore the saved PID.  */ - -#include "../../../../../../../libc/sysdeps/linux/arm/vfork.S" diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/i386/Makefile.arch index fff0dae89..9dc878c4c 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/Makefile.arch +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/i386/Makefile.arch @@ -5,7 +5,7 @@  # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.  # -libpthread_linux_arch_SSRC = pt-vfork.S clone.S pthread_spin_unlock.S pthread_once.S +libpthread_linux_arch_SSRC = clone.S pthread_spin_unlock.S pthread_once.S  libpthread_linux_arch_CSRC = pthread_spin_init.c pt-__syscall_error.c  libc_linux_arch_CSRC = fork.c diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/pt-vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/i386/pt-vfork.S deleted file mode 100644 index 5bba782df..000000000 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/pt-vfork.S +++ /dev/null @@ -1,67 +0,0 @@ -/* Copyright (C) 1999, 2002, 2004 Free Software Foundation, Inc. -   This file is part of the GNU C Library. -   Contributed by Andreas Schwab <schwab@gnu.org>. - -   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> -#define _ERRNO_H	1 -#include <bits/errno.h> -#include <bits/kernel-features.h> -#include <tcb-offsets.h> - -/* Save the PID value.  */ -#define SAVE_PID \ -	movl	%gs:PID, %edx; 						      \ -	movl	%edx, %eax;						      \ -	negl	%eax;							      \ -	movl	%eax, %gs:PID - -/* Restore the old PID value in the parent.  */ -#define RESTORE_PID \ -	testl	%eax, %eax;						      \ -	je	1f;							      \ -	movl	%edx, %gs:PID;						      \ -1: - -/* 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) -	/* Pop the return PC value into ECX.  */ -	popl	%ecx - -	SAVE_PID - -	/* Stuff the syscall number in EAX and enter into the kernel.  */ -	movl	$SYS_ify (vfork), %eax -	int	$0x80 - -	RESTORE_PID - -	/* Jump to the return PC.  Don't jump directly since this -	   disturbs the branch target cache.  Instead push the return -	   address back on the stack.  */ -	pushl	%ecx - -	cmpl	$-4095, %eax -	jae	SYSCALL_ERROR_LABEL	/* Branch forward if it failed.  */ -L(pseudo_end): -	ret -PSEUDO_END (__vfork) - -weak_alias (__vfork, vfork) diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/metag/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/metag/Makefile.arch index 4d02d0c9a..ddc768085 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/metag/Makefile.arch +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/metag/Makefile.arch @@ -5,7 +5,7 @@  # Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.  # -libpthread_linux_arch_SSRC = pt-vfork.S +libpthread_linux_arch_SSRC =  libpthread_linux_arch_CSRC = pthread_once.c \  	pt-__syscall_rt_sigaction.c pt-__syscall_error.c \  	lowlevellock.c diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-vfork.S deleted file mode 100644 index 489c74936..000000000 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-vfork.S +++ /dev/null @@ -1,51 +0,0 @@ -/* Copyright (C) 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, write to the Free -   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -   02111-1307 USA.  */ - -#include <tcb-offsets.h> -#include <asm/unistd.h> - -#ifdef __PIC__ -#define __VFORK_METAG_LOAD_TP ___metag_load_tp@PLT -#else -#define __VFORK_METAG_LOAD_TP ___metag_load_tp -#endif - -/* Save the PID value.  */ -#define SAVE_PID \ -	SETL	[A0StP++], D0FrT, D1RtP; \ -	CALLR	D1RtP, __VFORK_METAG_LOAD_TP; \ -	SUB	D0Re0, D0Re0, #TLS_PRE_TCB_SIZE; \ -	GETD	D0FrT, [D0Re0 + #PID]; \ -	NEG	D0FrT, D0FrT; \ -	SETD	[D0Re0 + #PID], D0FrT; \ -	GETL	D0FrT, D1RtP, [--A0StP]; - -#define RESTORE_PID \ -	CMP 	D0Re0, #0; \ -	BEQ	1f; \ -	MSETL	[A0StP++], D0Re0, D0FrT; \ -	CALLR	D1RtP, __VFORK_METAG_LOAD_TP; \ -	SUB	D0Re0, D0Re0, #TLS_PRE_TCB_SIZE; \ -	GETD	D0FrT, [D0Re0 + #PID]; \ -	NEG	D0FrT, D0FrT; \ -	SETD	[D0Re0 + #PID], D0FrT; \ -	GETL	D0FrT, D1RtP, [--A0StP]; \ -	GETL	D0Re0, D1Re0, [--A0StP]; \ -1: - -#include <../../../../../../../libc/sysdeps/linux/metag/vfork.S> diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/mips/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/mips/Makefile.arch index 4a3d0f248..f87dedca4 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/mips/Makefile.arch +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/mips/Makefile.arch @@ -5,7 +5,7 @@  # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.  # -libpthread_linux_arch_SSRC = pt-vfork.S clone.S +libpthread_linux_arch_SSRC = clone.S  libpthread_linux_arch_CSRC = pthread_once.c pt-__syscall_rt_sigaction.c  libc_linux_arch_CSRC = fork.c diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/mips/pt-vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/mips/pt-vfork.S deleted file mode 100644 index 52fbde337..000000000 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/mips/pt-vfork.S +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright (C) 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/>.  */ - -#include <features.h> -#include <tls.h> - -/* Save the PID value.  */ -#define SAVE_PID \ -	READ_THREAD_POINTER(v1);	/* Get the thread pointer.  */	\ -	lw	a2, PID_OFFSET(v1);	/* Load the saved PID.  */	\ -	subu	a2, $0, a2;		/* Negate it.  */		\ -	sw	a2, PID_OFFSET(v1);	/* Store the temporary PID.  */ - -/* Restore the old PID value in the parent.  */ -#define RESTORE_PID \ -	beqz	v0, 1f;			/* If we are the parent... */	\ -	READ_THREAD_POINTER(v1);	/* Get the thread pointer.  */	\ -	lw	a2, PID_OFFSET(v1);	/* Load the saved PID.  */	\ -	subu	a2, $0, a2;		/* Re-negate it.  */		\ -	sw	a2, PID_OFFSET(v1);	/* Restore the PID.  */		\ -1: - -#include <../../../../../../../libc/sysdeps/linux/mips/vfork.S> diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/Makefile.arch index 21b9b7239..df4bb6963 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/Makefile.arch +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/Makefile.arch @@ -5,7 +5,7 @@  # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.  # -libpthread_linux_arch_SSRC = pt-vfork.S +libpthread_linux_arch_SSRC =  libpthread_linux_arch_CSRC = pthread_once.c pt-__syscall_error.c  libc_linux_arch_CSRC = fork.c diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/pt-vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/pt-vfork.S deleted file mode 100644 index 2f82504a2..000000000 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/pt-vfork.S +++ /dev/null @@ -1,48 +0,0 @@ -/* Copyright (C) 2004 Free Software Foundation, Inc. -   This file is part of the GNU C Library. -   Contributed by Jakub Jelinek <jakub@redhat.com>, 2004. - -   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> -#define _ERRNO_H	1 -#include <bits/errno.h> -#include <bits/kernel-features.h> -#include <tcb-offsets.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) -	lwz	0,PID(2) -	neg	0,0 -	stw	0,PID(2) - -	DO_CALL (SYS_ify (vfork)) - -	cmpwi	1,3,0 -	beqlr-	1 - -	lwz	0,PID(2) -	neg	0,0 -	stw	0,PID(2) - -	PSEUDO_RET - -PSEUDO_END (__vfork) - -weak_alias (__vfork, vfork) diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/pt-vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/pt-vfork.S deleted file mode 100644 index 12e47b39c..000000000 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/pt-vfork.S +++ /dev/null @@ -1,48 +0,0 @@ -/* Copyright (C) 2004 Free Software Foundation, Inc. -   This file is part of the GNU C Library. -   Contributed by Jakub Jelinek <jakub@redhat.com>, 2004. - -   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> -#define _ERRNO_H	1 -#include <bits/errno.h> -#include <bits/kernel-features.h> -#include <tcb-offsets.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) -	lwz	0,PID(13) -	neg	0,0 -	stw	0,PID(13) - -	DO_CALL (SYS_ify (vfork)) - -	cmpwi	1,3,0 -	beqlr-	1 - -	lwz	0,PID(13) -	neg	0,0 -	stw	0,PID(13) - -	PSEUDO_RET - -PSEUDO_END (__vfork) - -weak_alias (__vfork, vfork) diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pt-vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pt-vfork.S deleted file mode 100644 index 0225219d9..000000000 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pt-vfork.S +++ /dev/null @@ -1,5 +0,0 @@ -#if defined __powerpc64__ -# include "powerpc64/pt-vfork.S" -#else -# include "powerpc32/pt-vfork.S" -#endif diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/Makefile.arch index 154dd6e66..908d9e15d 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/Makefile.arch +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/Makefile.arch @@ -5,7 +5,7 @@  # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.  # -libpthread_linux_arch_SSRC = pt-vfork.S pthread_once.S pthread_rwlock_wrlock.S \ +libpthread_linux_arch_SSRC = pthread_once.S pthread_rwlock_wrlock.S \  			pthread_rwlock_rdlock.S pthread_rwlock_unlock.S \  			lowlevellock.S lowlevelrobustlock.S pthread_barrier_wait.S \  			pthread_cond_broadcast.S pthread_cond_signal.S \ diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pt-vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pt-vfork.S deleted file mode 100644 index 56aa6d0af..000000000 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pt-vfork.S +++ /dev/null @@ -1,64 +0,0 @@ -/* Copyright (C) 2003, 2004 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/>.  */ - -#include <sysdep.h> -#define _ERRNO_H	1 -#include <bits/errno.h> -#include <tcb-offsets.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) -	/* Save the PID value.  */ -	stc	gbr, r2 -	mov.w	.L2, r0 -	mov.l	@(r0,r2), r4 -	neg	r4, r1 -	mov.l	r1, @(r0,r2) - -	mov.w	.L1, r3 -	trapa	#0x10 -	mov     r0, r1 - -	/* Restore the old PID value in the parent.  */ -	tst	r0, r0 -	bt/s	2f -	 stc	gbr, r2 -	mov.w	.L2, r0 -	mov.l	r4, @(r0,r2) -	mov	r1, r0 -2: -	mov	#-12, r2 -	shad	r2, r1 -	not	r1, r1			// r1=0 means r0 = -1 to -4095 -	tst	r1, r1			// i.e. error in linux -	bf	.Lpseudo_end -	SYSCALL_ERROR_HANDLER -.Lpseudo_end: -	rts -	 nop -.L1: -	.word	__NR_vfork -.L2: -	.word	PID - TLS_PRE_TCB_SIZE - -PSEUDO_END (__vfork) - -weak_alias (__vfork, vfork) diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/Makefile.arch index 2b2b5f579..01a9e879a 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/Makefile.arch +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/Makefile.arch @@ -5,7 +5,7 @@  # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.  # -libpthread_linux_arch_SSRC = pt-vfork.S clone.S +libpthread_linux_arch_SSRC = clone.S  libpthread_linux_arch_CSRC = pthread_once.c lowlevellock.c \  	pthread_barrier_init.c pthread_barrier_wait.c pthread_barrier_destroy.c \  	pt-__syscall_error.c diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pt-vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pt-vfork.S deleted file mode 100644 index 37231a8c3..000000000 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pt-vfork.S +++ /dev/null @@ -1,44 +0,0 @@ -/* Copyright (C) 2004 Free Software Foundation, Inc. -   This file is part of the GNU C Library. -   Contributed by Jakub Jelinek <jakub@redhat.com>, 2004. - -   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 <tcb-offsets.h> - -	.text -	.globl		__syscall_error -ENTRY(__vfork) -	ld	[%g7 + PID], %o5 -	sub	%g0, %o5, %o4 -	st	%o4, [%g7 + PID] - -	LOADSYSCALL(vfork) -	ta	0x10 -	bcc	2f -	 mov	%o7, %g1 -	st	%o5, [%g7 + PID] -	call	__syscall_error -	 mov	%g1, %o7 -2:	sub	%o1, 1, %o1 -	andcc	%o0, %o1, %o0 -	bne,a	1f -	 st	%o5, [%g7 + PID] -1:	retl -	 nop -END(__vfork) - -weak_alias (__vfork, vfork) diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/Makefile.arch index ebd506047..af1416485 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/Makefile.arch +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/Makefile.arch @@ -5,7 +5,7 @@  # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.  # -libpthread_linux_arch_SSRC = pt-vfork.S clone.S pthread_once.S \ +libpthread_linux_arch_SSRC = clone.S pthread_once.S \  	lowlevellock.S pthread_barrier_wait.S pthread_cond_signal.S pthread_cond_broadcast.S \  	sem_post.S sem_timedwait.S lowlevelrobustlock.S \  	sem_trywait.S sem_wait.S pthread_rwlock_rdlock.S pthread_rwlock_wrlock.S \ diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pt-vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pt-vfork.S deleted file mode 100644 index 08a085ce4..000000000 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pt-vfork.S +++ /dev/null @@ -1,32 +0,0 @@ -/* Copyright (C) 2004 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/>.  */ - -#include <tcb-offsets.h> - -#define SAVE_PID \ -	movl	%fs:PID, %esi;						      \ -	movl	%esi, %edx;						      \ -	negl	%edx;							      \ -	movl	%edx, %fs:PID - -#define RESTORE_PID \ -	testq	%rax, %rax;						      \ -	je	1f;							      \ -	movl	%esi, %fs:PID;						      \ -1: - -#include <../../../../../../../libc/sysdeps/linux/x86_64/vfork.S> | 
