#include #include #include #include #include #include #include #include void do_sched (struct proc* proc, spin_lock_t* cpu_lock) { spin_lock (&proc->lock); thiscpu->tss.rsp0 = proc->pdata.kernel_stack; thiscpu->syscall_kernel_stack = proc->pdata.kernel_stack; amd64_wrmsr (MSR_FS_BASE, proc->pdata.fs_base); spin_unlock (&proc->lock); spin_unlock (cpu_lock); amd64_do_sched ((void*)&proc->pdata.regs, (void*)proc->procgroup->pd.cr3_paddr); }