#include "init/Init.h" #include "assert.h" #include "bootboot.h" #include "cpu/CPU.h" #include "interrupts/Interrupts.h" #include "io/Serial.h" #include "memory/RangeAllocator.h" #include "memory/VMM.h" #include "panic/hang.h" #include "rand/Init.h" #include "rand/Mersenne.h" #include "render/Framebuffer.h" #include "render/TextRenderer.h" #include extern BOOTBOOT bootboot; uintptr_t __stack_chk_guard = 0xfeff34; void Init::check_magic() { ASSERT(strncmp((char*)bootboot.magic, BOOTBOOT_MAGIC, 4) == 0); } void Init::disable_smp() { if (CPU::get_initial_apic_id() != bootboot.bspid) { hang(); } return; } void Init::early_init() { Interrupts::disable(); asm volatile("cld"); framebuffer0.init((void*)bootboot.fb_ptr, bootboot.fb_type, bootboot.fb_scanline, bootboot.fb_width, bootboot.fb_height); // ASSERT(TextRenderer::try_initialize()); kernelPMM.init_from_mmap(); kernelVMM.init(); Mersenne::init(); __stack_chk_guard = Mersenne::get(); }