diff options
Diffstat (limited to 'libc/sysdeps/linux')
-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 |