123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- #include <features.h>
- #define _SYSCALL_H
- #include <bits/sysnum.h>
- #define _ERRNO_H 1
- #include <bits/errno.h>
- .text
- .align 4
- .type __vfork,@function
- .globl __vfork;
- __vfork:
- mov.w .L2, r3
- trapa #0x10
- mov r0, r1
- #ifdef __sh2__
- shar r1
- shar r1
- shar r1
- shar r1
- shar r1
- shar r1
- shar r1
- shar r1
- shar r1
- shar r1
- shar r1
- shar r1
- #else
- mov #-12, r2
- shad r2, r1
- #endif
- not r1, r1
- tst r1, r1
- bf 2f
- mov.w .L1, r1
- cmp/eq r1, r0
- bf/s __syscall_error
- mov r0, r4
-
- mov.w .L3, r3
- trapa #0x10
- mov r0, r1
- #ifdef __sh2__
- shar r1
- shar r1
- shar r1
- shar r1
- shar r1
- shar r1
- shar r1
- shar r1
- shar r1
- shar r1
- shar r1
- shar r1
- #else
- mov #-12, r2
- shad r2, r1
- #endif
- not r1, r1
- tst r1, r1
- bt/s __syscall_error
- mov r0, r4
- 2:
- rts
- nop
- .align 2
- .L1:
- .word -ENOSYS
- .L2:
- .word __NR_vfork
- .L3:
- .word __NR_fork
- .size __vfork, .-__vfork
- .weak vfork
- vfork = __vfork
- #include "syscall_error.S"
|