diff options
Diffstat (limited to 'libc/sysdeps/linux/arm/vfork.S')
-rw-r--r-- | libc/sysdeps/linux/arm/vfork.S | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/libc/sysdeps/linux/arm/vfork.S b/libc/sysdeps/linux/arm/vfork.S index 68798995a..5092023a8 100644 --- a/libc/sysdeps/linux/arm/vfork.S +++ b/libc/sysdeps/linux/arm/vfork.S @@ -2,7 +2,7 @@ /* vfork for uClibc * * Copyright (C) 2000 by Lineo, inc. and Erik Andersen - * Copyright (C) 2000,2001 by Erik Andersen <andersen@uclibc.org> + * Copyright (C) 2000-2006 by Erik Andersen <andersen@uclibc.org> * Written by Erik Andersen <andersen@uclibc.org> * * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. @@ -24,9 +24,13 @@ __vfork: #ifdef __NR_vfork - swi __NR_vfork + DO_CALL (vfork) cmn r0, #4096 +#if defined(__USE_BX__) + bxcc lr +#else movcc pc, lr +#endif /* Check if vfork even exists. */ ldr r1, =-ENOSYS @@ -35,15 +39,20 @@ __vfork: #endif /* If we don't have vfork, use fork. */ - swi __NR_fork + DO_CALL (fork) cmn r0, #4096 /* Syscall worked. Return to child/parent */ +#if defined(__USE_BX__) + bxcc lr +#else movcc pc, lr +#endif __error: b __syscall_error .size __vfork,.-__vfork -strong_alias(__vfork,vfork) +weak_alias(__vfork,vfork) +libc_hidden_weak(vfork) #endif |