Files
RockOS/kernel/kmain.c
2026-06-14 18:53:54 -05:00

65 lines
1.2 KiB
C

#include "multiboot.h"
#include <lib/print.h>
#include <lib/stream.h>
#include <idt.h>
#include <stddef.h>
#include <stdint.h>
#include "memory/mm.h"
extern void init_idt();
extern void init_gdt();
extern void init_pic();
extern void init_pit();
extern int init_ps2();
extern void enable_interrupts();
void* page = NULL;
void kmain(uint32_t magic, multiboot_info* mbi) {
extern print_stream_t vga_print_stream;
extern print_stream_t* kout;
kout = &vga_print_stream;
kout->trunc();
kprintf("RockOS booting...\n");
init_gdt();
kprintf("GDT set\n");
init_idt();
kprintf("IDT set\n");
init_pic();
kprintf("PIC initialized\n");
init_pit();
kprintf("PIT initialized\n");
int result = init_ps2();
if (result == -1) {
kprintf("PS2 init failed\n");
return;
}
kprintf("PS2 initialized\n");
if (!(mbi->flags & (1 << 6))) {
return;
}
init_mm((void*)mbi->mmap_addr, mbi->mmap_length);
uint32_t mem_size = total_free_memory();
kprintf("Total available memory: %d MB\n", mem_size / 1024 / 1024);
init_paging();
enable_paging();
kprintf("Paging enabled\n");
// enable_interrupts();
// kprintf("Interrupts enabled\n");
while(1);
}