diff options
Diffstat (limited to 'src/syscall/asm_linux_386.s')
-rw-r--r-- | src/syscall/asm_linux_386.s | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/syscall/asm_linux_386.s b/src/syscall/asm_linux_386.s index 4201f367ba..1c69083118 100644 --- a/src/syscall/asm_linux_386.s +++ b/src/syscall/asm_linux_386.s @@ -110,6 +110,26 @@ ok2: MOVL $0, err+36(FP) RET +// func rawVforkSyscall(trap, a1 uintptr) (r1, err uintptr) +TEXT ·rawVforkSyscall(SB),NOSPLIT|NOFRAME,$0-16 + MOVL trap+0(FP), AX // syscall entry + MOVL a1+4(FP), BX + MOVL $0, CX + MOVL $0, DX + POPL SI // preserve return address + INVOKE_SYSCALL + PUSHL SI + CMPL AX, $0xfffff001 + JLS ok + MOVL $-1, r1+8(FP) + NEGL AX + MOVL AX, err+12(FP) + RET +ok: + MOVL AX, r1+8(FP) + MOVL $0, err+12(FP) + RET + // func rawSyscallNoError(trap uintptr, a1, a2, a3 uintptr) (r1, r2 uintptr); TEXT ·rawSyscallNoError(SB),NOSPLIT,$0-24 MOVL trap+0(FP), AX // syscall entry |