OpenCores
URL https://opencores.org/ocsvn/hf-risc/hf-risc/trunk

Subversion Repositories hf-risc

[/] [hf-risc/] [trunk/] [tools/] [riscv-gnu-toolchain-master/] [glibc/] [sysdeps/] [unix/] [sysv/] [linux/] [riscv/] [vfork.S] - Blame information for rev 13

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 13 serginhofr
/* Copyright (C) 2005 Free Software Foundation, Inc.
2
   This file is part of the GNU C Library.
3
 
4
   The GNU C Library is free software; you can redistribute it and/or
5
   modify it under the terms of the GNU Lesser General Public
6
   License as published by the Free Software Foundation; either
7
   version 2.1 of the License, or (at your option) any later version.
8
 
9
   The GNU C Library is distributed in the hope that it will be useful,
10
   but WITHOUT ANY WARRANTY; without even the implied warranty of
11
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12
   Lesser General Public License for more details.
13
 
14
   You should have received a copy of the GNU Lesser General Public
15
   License along with the GNU C Library; if not, write to the Free
16
   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
17
   02111-1307 USA.  */
18
 
19
/* vfork() is just a special case of clone().  */
20
 
21
#include 
22
#include 
23
#define __ASSEMBLY__
24
#include 
25
#include 
26
 
27
#ifndef SAVE_PID
28
#define SAVE_PID
29
#endif
30
 
31
#ifndef RESTORE_PID
32
#define RESTORE_PID
33
#endif
34
 
35
 
36
/* int vfork() */
37
 
38
        .text
39
LEAF(__vfork)
40
 
41
        SAVE_PID
42
 
43
#if (CLONE_VFORK | CLONE_VM | SIGCHLD) != 0x4111
44
# error
45
#endif
46
        li              a0, (CLONE_VFORK | CLONE_VM | SIGCHLD)
47
        move            a1, sp
48
        li              a2, 0
49
        li              a3, 0
50
        li              a4, 0
51
 
52
        /* Do the system call */
53
        li              a7,__NR_clone
54
        scall
55
 
56
        bltz            a0,L(error)
57
 
58
        RESTORE_PID
59
 
60
        ret
61
 
62
        /* Something bad happened -- no child created.  */
63
L(error):
64
        j               __syscall_error
65
 
66
        END(__vfork)
67
 
68
libc_hidden_def(__vfork)
69
weak_alias (__vfork, vfork)

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.