From a7ca32e3a3ec2d3c1947a06fbcde0f779b0b1fec Mon Sep 17 00:00:00 2001 From: Frans Kaashoek Date: Tue, 9 Oct 2018 20:22:48 -0400 Subject: Change mycpu() to use %gs. --- vm.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'vm.c') diff --git a/vm.c b/vm.c index ebb6749..c0276a1 100644 --- a/vm.c +++ b/vm.c @@ -39,7 +39,8 @@ seginit(void) struct cpu *c; struct desctr dtr; - c = mycpu(); + c = getmycpu(); + memmove(c->gdt, bootgdt, sizeof bootgdt); dtr.limit = sizeof(c->gdt)-1; dtr.base = (uint64) c->gdt; @@ -54,10 +55,12 @@ seginit(void) writemsr(MSR_LSTAR, (uint64)&sysentry); writemsr(MSR_SFMASK, FL_TF | FL_IF); - // Initialize cpu-local storage. + // Initialize cpu-local storage so that each core can easily + // find its struct cpu using %gs. writegs(SEG_KDATA); writemsr(MSR_GS_BASE, (uint64)c); writemsr(MSR_GS_KERNBASE, (uint64)c); + c->cpu = c; } // Return the address of the PTE in page table pgdir -- cgit v1.2.3