From 917b9eebbc6dd580e2fa5a4e2b18ea609655b19e Mon Sep 17 00:00:00 2001 From: Vineet Gupta Date: Fri, 13 Dec 2013 14:49:25 +0530 Subject: 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 Signed-off-by: Bernhard Reutner-Fischer --- libc/sysdeps/linux/arc/vfork.S | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 libc/sysdeps/linux/arc/vfork.S (limited to 'libc/sysdeps/linux/arc/vfork.S') 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 +#include + +/* No legacy syscall ABI means NR_vfork is not available at all, use clone */ +#define _SIGNAL_H +#include /* 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) -- cgit v1.2.3