feat: some clean up and validation of multiboot header
This commit is contained in:
@@ -49,7 +49,8 @@ void init_block_devices() {
|
||||
fat_register_block_driver();
|
||||
}
|
||||
|
||||
void noreturn kmain(multiboot_info_t *multiboot_info) {
|
||||
void noreturn kmain(multiboot_info_t *multiboot_info, uint32_t mb_name) {
|
||||
// early init
|
||||
isr_install();
|
||||
vga_clear_screen();
|
||||
vga_clear_screen(' ', VGA_WHITE | (VGA_GRAY << VGA_SHIFT_BG));
|
||||
@@ -57,25 +58,42 @@ void noreturn kmain(multiboot_info_t *multiboot_info) {
|
||||
serial_init();
|
||||
kprint_register(serial_kprint);
|
||||
|
||||
// parse multiboot
|
||||
if (mb_name != MULTIBOOT_BOOTLOADER_MAGIC) {
|
||||
k_panics("Not booted by multiboot\n");
|
||||
}
|
||||
|
||||
store_bootloader_info(multiboot_info);
|
||||
|
||||
// initialize memory management
|
||||
init_mmap(multiboot_info);
|
||||
|
||||
// initialize kprint functionality
|
||||
kprint_init();
|
||||
|
||||
// identify cpu
|
||||
cpuidx_print_info();
|
||||
|
||||
// init done, enable interrupts
|
||||
// enable interrupts
|
||||
__asm__ __volatile__("sti");
|
||||
// start the timer
|
||||
init_timer(1000);
|
||||
// initialize devices
|
||||
init_keyboard();
|
||||
init_pci_system();
|
||||
|
||||
// register block device drivers
|
||||
init_block_devices();
|
||||
|
||||
printf("Booted successfully v%d.%d.%d\n", version_major, version_minor, version_patch);
|
||||
|
||||
// initialize tasking
|
||||
task_init();
|
||||
kprint_start_task();
|
||||
block_dev_start_task();
|
||||
#ifdef K_SHELL
|
||||
task_spawn(main_loop, NULL);
|
||||
#endif
|
||||
// switch to tasking
|
||||
syscall_start_scheduler();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user