12345678910111213141516171819202122232425262728293031323334353637383940 |
- #include <asm/unistd.h>
- #ifndef __NR_vfork
- #define __NR_vfork __NR_fork /* uClinux-2.0 only has fork which is vfork */
- #endif
- #ifdef __H8300S__
- .h8300s
- #else
- .h8300h
- #endif
- .text
- .align 2
- .globl _errno
- .globl _vfork
- #if defined __HAVE_ELF__
- .type vfork,@function
- #endif
- _vfork:
- mov.l @sp+, er1
- sub.l er0,er0
- mov.b #__NR_vfork,r0l
- trapa #0
- mov.l #-4096, er2
- cmp.l er0,er2
- bcs fix_errno
- jmp @er1 /* don't return, just jmp directly */
- fix_errno:
- neg.l er0
- #if !defined(__PIC__)
- mov.l er0,@_errno
- #else
- mov.l @(_errno@GOTOFF,er5),er2
- mov.l er0,@er2
- #endif
- sub.l er0,er0
- dec.l #1,er0
- jmp @er1 /* don't return, just jmp directly */
|