diff options
author | Vineet Gupta <vgupta@synopsys.com> | 2013-12-13 14:49:25 +0530 |
---|---|---|
committer | Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> | 2013-12-20 14:38:23 +0100 |
commit | 917b9eebbc6dd580e2fa5a4e2b18ea609655b19e (patch) | |
tree | c1b6c5c73db18a0daaca8327d28a0d5babd0f5cc /libc/sysdeps/linux/arc/vfork.S | |
parent | 1ce639990b6340a8b9f18d076c427fcf5a93695e (diff) |
ARC port to uClibc
For this port, I would like to give due credit to:
- Folks from Codito technologies (Sameer, Amit, Kanika, Ramana,...)
who did the very first port
- ARC UK from 2007-2009 (Joern, Irfan, Khurram, Phil...
- Late Brendan Kehoe (may he RIP)
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Diffstat (limited to 'libc/sysdeps/linux/arc/vfork.S')
-rw-r--r-- | libc/sysdeps/linux/arc/vfork.S | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/libc/sysdeps/linux/arc/vfork.S b/libc/sysdeps/linux/arc/vfork.S new file mode 100644 index 000000000..542239fb8 --- /dev/null +++ b/libc/sysdeps/linux/arc/vfork.S @@ -0,0 +1,29 @@ +/* + * 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 <sys/syscall.h> +#include <sysdep.h> + +/* No legacy syscall ABI means NR_vfork is not available at all, use clone */ +#define _SIGNAL_H +#include <bits/signum.h> /* For SIGCHLD */ + +#define CLONE_VM 0x00000100 +#define CLONE_VFORK 0x00004000 +#define CLONE_FLAGS_FOR_VFORK (CLONE_VM|CLONE_VFORK|SIGCHLD) + +ENTRY(vfork) + mov r0, CLONE_FLAGS_FOR_VFORK + mov_s r1, sp + mov r8, __NR_clone + ARC_TRAP_INSN + + cmp r0, 0 + jge [blink] ; pid >=0 return, else detour via tailcall to errno + + b __syscall_error +END(vfork) +libc_hidden_def(vfork) |