1/* 2 * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com) 3 * 4 * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball. 5 */ 6 7#include <sys/syscall.h> 8#include <sysdep.h> 9 10/* No legacy syscall ABI means NR_vfork is not available at all, use clone */ 11#define _SIGNAL_H 12#include <bits/signum.h> /* For SIGCHLD */ 13 14#define CLONE_VM 0x00000100 15#define CLONE_VFORK 0x00004000 16#define CLONE_FLAGS_FOR_VFORK (CLONE_VM|CLONE_VFORK|SIGCHLD) 17 18ENTRY(__vfork) 19 mov r0, CLONE_FLAGS_FOR_VFORK 20 mov_s r1, sp 21 mov r8, __NR_clone 22 ARC_TRAP_INSN 23 24 cmp r0, 0 25 jge [blink] ; pid >=0 return, else detour via tailcall to errno 26 27 b __syscall_error 28END(__vfork) 29 30weak_alias(__vfork,vfork) 31libc_hidden_def(vfork) 32