From 80aad418fcf63edb184a85d470531388a18cec5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Lov=C3=A9n?= Date: Fri, 16 Mar 2018 09:01:31 +0100 Subject: [PATCH] Cleanup and commenting --- src/kernel/cpu/cpu.c | 3 ++- src/kernel/cpu/registers.S | 1 - src/kernel/include/cpu.h | 3 +++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/kernel/cpu/cpu.c b/src/kernel/cpu/cpu.c index d27cb27..4c678d2 100644 --- a/src/kernel/cpu/cpu.c +++ b/src/kernel/cpu/cpu.c @@ -9,9 +9,10 @@ struct cpu __seg_gs *cpu = 0; void cpu_init() { + // Set up cpu struct struct cpu *c = P2V(pmm_calloc()); c->cpu = c; - write_msr(0xc0000102, (uint64_t)c); + write_msr(KERNEL_GS_BASE, (uint64_t)c); asm("swapgs"); interrupt_init(); diff --git a/src/kernel/cpu/registers.S b/src/kernel/cpu/registers.S index 2f0c7ea..fa9a113 100644 --- a/src/kernel/cpu/registers.S +++ b/src/kernel/cpu/registers.S @@ -49,7 +49,6 @@ read_msr: shl rdx, 32 add rax, rdx ret - .global write_msr write_msr: mov rcx, rdi diff --git a/src/kernel/include/cpu.h b/src/kernel/include/cpu.h index c34fdac..bc9e12c 100644 --- a/src/kernel/include/cpu.h +++ b/src/kernel/include/cpu.h @@ -26,5 +26,8 @@ uint64_t read_cr3(); void write_cr3(uint64_t); uint64_t read_cr4(); +// Model Specific Registers +// Functions defined in cpu/registers.S void write_msr(uint64_t reg, uint64_t value); uint64_t read_msr(uint64_t reg); +#define KERNEL_GS_BASE 0xC0000102