Handout
This commit is contained in:
49
kernel/boot/startup.cc
Normal file
49
kernel/boot/startup.cc
Normal file
@@ -0,0 +1,49 @@
|
||||
#include "startup.h"
|
||||
|
||||
#include "../arch/acpi.h"
|
||||
#include "../arch/apic.h"
|
||||
#include "../arch/core.h"
|
||||
#include "../arch/idt.h"
|
||||
#include "../arch/pic.h"
|
||||
#include "../compiler/libc.h"
|
||||
#include "../debug/output.h"
|
||||
#include "../interrupt/handlers.h"
|
||||
|
||||
extern "C" [[noreturn]] void kernel_init() {
|
||||
// Setup and load Interrupt Description Table (IDT)
|
||||
initInterruptHandlers();
|
||||
|
||||
// Initialize PICs
|
||||
PIC::initialize();
|
||||
|
||||
// Call global constructors
|
||||
CSU::initializer();
|
||||
|
||||
// Initialize ACPI
|
||||
if (!ACPI::init()) {
|
||||
DBG_VERBOSE << "No ACPI!";
|
||||
Core::die();
|
||||
}
|
||||
// Initialize APIC (using ACPI)
|
||||
if (!APIC::init()) {
|
||||
DBG_VERBOSE << "APIC Initialization failed";
|
||||
Core::die();
|
||||
}
|
||||
|
||||
// Initialize the Bootstrap Processor
|
||||
Core::init();
|
||||
|
||||
// Go to main function
|
||||
main();
|
||||
|
||||
// Exit CPU
|
||||
DBG_VERBOSE << "CPU core " << Core::getID() << " (BSP) shutdown." << endl;
|
||||
Core::exit();
|
||||
// Call global destructors
|
||||
CSU::finalizer();
|
||||
|
||||
// wait forever
|
||||
while (true) {
|
||||
Core::die();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user