| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 | /* * libc/sysdeps/linux/nios2/vfork.S -- `vfork' syscall for linux/nios2 * *  Copyright (C) 2004  Microtronix Datacom Ltd * * This file is subject to the terms and conditions of the GNU Lesser * General Public License.  See the file COPYING.LIB in the main * directory of this archive for more details. *  * Written by Wentao Xu <wentao@microtronix.com> */#include <asm/unistd.h>#ifndef __NR_vfork#define __NR_vfork __NR_fork /* uClinux-2.0 only has fork which is vfork */#endif   .text   .balign 4   .globl errno   .globl vfork   .globl __libc_vfork#if defined __HAVE_ELF__   .type    vfork,@function   .type    __libc_vfork,@function#endifvfork:__libc_vfork:    movui   r2, TRAP_ID_SYSCALL    movui   r3, __NR_vfork    trap    movi    r8, -4096    bltu    r8, r2, fix_errno    retfix_errno:    sub     r8, r0, r2        addi    sp, sp, -8    stw     ra, 4(sp)    stw     r8, 0(sp)#ifndef __PIC__    call    __errno_location#else    #endif    ldw     ra, 4(sp)    ldw     r8, 0(sp)    stw     r8, 0(r2)        addi    r2, r0, -1    addi  sp, sp, 8    ret
 |