ptos/amd64: ps: Add support for CPL 3 processes
Signed-off-by: Chloe M <chloe@mensia.org>
This commit is contained in:
@@ -20,8 +20,12 @@ HalContextSwitch(TRAP_FRAME *Frame)
|
||||
PROCESS *NextParent;
|
||||
TCB *ThisTcb, *NextTcb;
|
||||
KPCR *Kpcr;
|
||||
MCB *Mcb;
|
||||
TSS_ENTRY *Tss;
|
||||
UPTR KStackTop;
|
||||
|
||||
Kpcr = HalKpcrCurrent();
|
||||
Mcb = &Kpcr->Mcb;
|
||||
ThisThread = Kpcr->CurrentThread;
|
||||
NextThread = NULL;
|
||||
|
||||
@@ -54,6 +58,12 @@ HalContextSwitch(TRAP_FRAME *Frame)
|
||||
NextParent = NextThread->Parent;
|
||||
HalMmuWriteVas(&NextParent->Vas);
|
||||
|
||||
/* Update the task state segment with kstack */
|
||||
KStackTop = NextTcb->KStackBase + NextTcb->KStackLength;
|
||||
Tss = Mcb->Tss;
|
||||
Tss->Rsp0Low = KStackTop & 0xFFFFFFFF;
|
||||
Tss->Rsp0High = (KStackTop >> 32) & 0xFFFFFFFF;
|
||||
|
||||
/* Context switch here */
|
||||
Kpcr->CurrentThread = NextThread;
|
||||
NextTcb = &NextThread->Tcb;
|
||||
|
||||
Reference in New Issue
Block a user