[SMP] Initialize APs

This commit is contained in:
2016-11-23 16:16:50 +01:00
parent 6a2bef5517
commit 8961ae33eb
5 changed files with 50 additions and 22 deletions

View File

@@ -1,6 +1,7 @@
#include <mem.h>
#include <cpu.h>
#include <msr.h>
#include <gdt.h>
#define TRAMPOLINE_OFFSET TRAMPOLINE_ADDR - trampoline
.intel_syntax noprefix
@@ -51,7 +52,7 @@ start_32:
or eax, 1<<31
mov cr0, eax
lgdt V2P(BootGDTp)
lgdt [trampoline_GDTp + TRAMPOLINE_OFFSET]
mov ax, 0x10
mov ds, ax
@@ -106,5 +107,14 @@ ap_boot_idt:
.global ap_gs_base
ap_gs_base:
.long 0x00000000, 0x00000000
.global trampoline_GDT
trampoline_GDT:
.quad 0
.quad (GDT_PRESENT | GDT_CODEDATA | GDT_WRITE | GDT_EXECUTE | GDT_64BIT)
.quad (GDT_PRESENT | GDT_CODEDATA | GDT_WRITE)
trampoline_GDTp:
.short 3*8-1
.quad TRAMPOLINE_GDT
trampoline_end:
nop