fix: forked child should inherit parent's x87 and mmx state
: "i"(KSTACK_TOP), "i"(KCODE_SEG), "r"(proc0->intr_ctx.eip)
: "%ebx", "memory");
: "i"(KSTACK_TOP), "i"(KCODE_SEG), "r"(proc0->intr_ctx.eip)
: "%ebx", "memory");
+ // 加载x87默认配置
+ asm volatile("fninit\n"
+ "fxsave (%%eax)" ::"a"(proc0->fxstate)
+ : "memory");
+
// 向调度器注册进程。
commit_process(proc0);
// 向调度器注册进程。
commit_process(proc0);
pcb->intr_ctx = __current->intr_ctx;
pcb->parent = __current;
pcb->intr_ctx = __current->intr_ctx;
pcb->parent = __current;
+ memcpy(pcb->fxstate, __current->fxstate, 512);
+
if (__current->cwd) {
pcb->cwd = __current->cwd;
vfs_ref_dnode(pcb->cwd);
if (__current->cwd) {
pcb->cwd = __current->cwd;
vfs_ref_dnode(pcb->cwd);