diff options
| -rw-r--r-- | libc/sysdeps/linux/bfin/Makefile.arch | 2 | ||||
| -rw-r--r-- | libc/sysdeps/linux/bfin/vfork.S | 20 | ||||
| -rw-r--r-- | libc/sysdeps/linux/common/vfork.c | 20 | 
3 files changed, 14 insertions, 28 deletions
| diff --git a/libc/sysdeps/linux/bfin/Makefile.arch b/libc/sysdeps/linux/bfin/Makefile.arch index 4b44ed02c..c44a7dcda 100644 --- a/libc/sysdeps/linux/bfin/Makefile.arch +++ b/libc/sysdeps/linux/bfin/Makefile.arch @@ -8,7 +8,7 @@  CSRC := bsdsetjmp.c clone.c \  	sram-alloc.c sram-free.c dma-memcpy.c -SSRC := __longjmp.S setjmp.S bsd-_setjmp.S vfork.S +SSRC := __longjmp.S setjmp.S bsd-_setjmp.S  ARCH_HEADERS := bfin_fixed_code.h bfin_l1layout.h bfin_sram.h diff --git a/libc/sysdeps/linux/bfin/vfork.S b/libc/sysdeps/linux/bfin/vfork.S deleted file mode 100644 index 4e9aa844e..000000000 --- a/libc/sysdeps/linux/bfin/vfork.S +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org> - * - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - */ - -#include <sys/syscall.h> - -.text -.global ___vfork -.hidden ___vfork -.type	___vfork,STT_FUNC; -.align 4 -___vfork: -	p0 = __NR_vfork; -	excpt 0; -	rts; -.size ___vfork,.-___vfork -weak_alias(__vfork,vfork) -libc_hidden_weak(vfork) diff --git a/libc/sysdeps/linux/common/vfork.c b/libc/sysdeps/linux/common/vfork.c index eda76aeac..e7c920892 100644 --- a/libc/sysdeps/linux/common/vfork.c +++ b/libc/sysdeps/linux/common/vfork.c @@ -4,24 +4,30 @@   * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.   */ -/* Trivial implementation for arches that lack vfork */  #include <unistd.h>  #include <sys/types.h>  #include <sys/syscall.h> -#ifdef __ARCH_USE_MMU__ +extern __typeof(vfork) __vfork attribute_hidden; -#ifdef __NR_fork -/* libc_hidden_proto(fork) */ +#ifdef __NR_vfork + +# define __NR___vfork __NR_vfork +_syscall0(pid_t, __vfork) + +weak_alias(__vfork,vfork) +libc_hidden_weak(vfork) + +#elif defined __ARCH_USE_MMU__ && defined __NR_fork + +/* Trivial implementation for arches that lack vfork */ -extern __typeof(vfork) __vfork attribute_hidden;  pid_t __vfork(void)  {      return fork();  } -/* libc_hidden_proto(vfork) */ +  weak_alias(__vfork,vfork)  libc_hidden_weak(vfork) -#endif  #endif | 
