提交 214c3dcc 创建 作者: Silas Boyd-Wickizer's avatar Silas Boyd-Wickizer

amd64 uthread.S.

上级 1de04831
......@@ -57,7 +57,7 @@ OBJS = \
trap.o \
trapasm.o \
ULIB = ulib.o usys.o printf.o umalloc.o
ULIB = ulib.o usys.o printf.o umalloc.o uthread.o
UPROGS= \
_cat \
......
#include "syscall.h"
#include "traps.h"
.globl forkt
forkt:
movl 4(%esp), %ecx ## new stack ptr
movl 8(%esp), %edx ## function ptr
pushl $1 ## flag for sys_fork
pushl $0 ## return address (dummy)
movl $SYS_fork, %eax
int $T_SYSCALL
addl $8, %esp
cmpl $0, %eax
jne 1f
movl %ecx, %esp
jmp *%edx
pushq %rdi ## new stack ptr
pushq %rsi ## function ptr
movq $1, %rdi ## flag for sys_fork
callq fork
popq %rsi
popq %rdi
cmpl $0, %eax
jne 1f
movq %rdi, %rsp
jmp *%rsi
1:
ret
ret
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论