From 36960f0c763a904d6d1f028e2c33b7bbe43c2a3a Mon Sep 17 00:00:00 2001 From: Palmer Dabbelt Date: Mon, 29 Jan 2018 10:27:52 -0800 Subject: RISC-V: Linux Syscall Interface Contains the Linux system call interface, as well as the definitions of a handful of system calls. 2018-01-29 Palmer Dabbelt * sysdeps/riscv/nptl/nptl-sysdep.S: New file. * sysdeps/unix/sysv/linux/riscv/arch-fork.h: Likewise. * sysdeps/unix/sysv/linux/riscv/clone.S: Likewise. * sysdeps/unix/sysv/linux/riscv/profil-counter.h: Likewise. * sysdeps/unix/sysv/linux/riscv/pt-vfork.S: Likewise. * sysdeps/unix/sysv/linux/riscv/syscall.c: Likewise. * sysdeps/unix/sysv/linux/riscv/sysdep.S: Likewise. * sysdeps/unix/sysv/linux/riscv/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/riscv/vfork.S: Likewise. --- sysdeps/unix/sysv/linux/riscv/vfork.S | 44 +++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 sysdeps/unix/sysv/linux/riscv/vfork.S (limited to 'sysdeps/unix/sysv/linux/riscv/vfork.S') diff --git a/sysdeps/unix/sysv/linux/riscv/vfork.S b/sysdeps/unix/sysv/linux/riscv/vfork.S new file mode 100644 index 0000000000..6c53e93a92 --- /dev/null +++ b/sysdeps/unix/sysv/linux/riscv/vfork.S @@ -0,0 +1,44 @@ +/* vfork for Linux, RISC-V version. + Copyright (C) 2005-2018 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +/* vfork() is just a special case of clone(). */ + +#include +#include +#define __ASSEMBLY__ +#include +#include + + .text +LEAF (__libc_vfork) + + li a0, (CLONE_VFORK | CLONE_VM | SIGCHLD) + mv a1, sp + + li a7, __NR_clone + scall + + bltz a0, 1f + ret + +1: j __syscall_error +END (__libc_vfork) + +weak_alias (__libc_vfork, vfork) +strong_alias (__libc_vfork, __vfork) +libc_hidden_def (__vfork) -- cgit 1.4.1