#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include int kernel_main(mb2_tag_header *multiboot_bootinfo, uint32_t multiboot_magic); int kernel_main(mb2_tag_header *multiboot_bootinfo, uint32_t multiboot_magic) { init_serial(); /* serial is enabled from this point */ init_gdt(); init_paging(); init_heap(); read_mb2(multiboot_bootinfo, multiboot_magic); clear_screen(main_fb); init_mutex(&stdio_lock); init_mutex(&serial_stdio_lock); /* framebuffer is enabled from this point */ init_pmm(); memory_usage(); init_keyboard(); init_timer(TICKS_PER_SECOND); init_idt(); disc_init(); ext2_init(); init_tss(); list_sys_tables(); parse_madt(); apic_remap_interrupts(); enable_interrupts(); init_userspace(); read_mcfgt(); init_scheduler(); for (;;) { __asm__ __volatile__("pause; hlt;"); } return 0; }