boot page table works
This commit is contained in:
@@ -27,13 +27,30 @@ void kmain(uint32_t magic, multiboot_info* mbi) {
|
||||
kout = &vga_print_stream;
|
||||
kout->trunc();
|
||||
|
||||
kprintf("RockOS booting...\n");
|
||||
kprintf("kernel start: 0x%x\n", &__kernel_start);
|
||||
kprintf("kernel end: 0x%x\n", &__kernel_end);
|
||||
uint32_t size = (&__kernel_end - &__kernel_start) / 1024;
|
||||
kprintf("kernel size: %dKB\n", size);
|
||||
|
||||
if (!(mbi->flags & (1 << 6))) {
|
||||
return;
|
||||
}
|
||||
|
||||
kprintf("multiboot virtual address: 0x%x\n", mbi);
|
||||
uint32_t mmap_virtual_addr = mbi->mmap_addr + 0xC0000000;
|
||||
kprintf("mmap virtual address: 0x%x\n", mmap_virtual_addr);
|
||||
init_pmm((void*)mmap_virtual_addr, mbi->mmap_length);
|
||||
uint32_t mem_size = total_free_memory();
|
||||
kprintf("Total available memory: %d MB\n", mem_size / 1024 / 1024);
|
||||
|
||||
kprintf("RockOS booting...\n");
|
||||
init_gdt();
|
||||
kprintf("GDT set\n");
|
||||
extern uint64_t gdt[5];
|
||||
kprintf("GDT set @ 0x%x\n", &gdt);
|
||||
|
||||
init_idt();
|
||||
kprintf("IDT set\n");
|
||||
extern idt_entry idt[256];
|
||||
kprintf("IDT set @ 0x%x\n", &idt);
|
||||
|
||||
init_pic();
|
||||
kprintf("PIC initialized\n");
|
||||
@@ -41,30 +58,15 @@ void kmain(uint32_t magic, multiboot_info* mbi) {
|
||||
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_pmm((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);
|
||||
|
||||
kprintf("__kernel_start: 0x%x\n", &__kernel_start);
|
||||
kprintf("__kernel_end: 0x%x\n", &__kernel_end);
|
||||
extern uint32_t page_directory[1024];
|
||||
kprintf("page directory: 0x%x\n", &page_directory);
|
||||
uint32_t size = (&__kernel_end - &__kernel_start) / 1024;
|
||||
kprintf("kernel size: %dKB\n", size);
|
||||
// int result = init_ps2();
|
||||
// if (result == -1) {
|
||||
// kprintf("PS2 init failed\n");
|
||||
// return;
|
||||
// }
|
||||
// kprintf("PS2 initialized\n");
|
||||
|
||||
init_page_tables();
|
||||
kprintf("Page tables reloaded");
|
||||
kprintf("Page tables initialized\n");
|
||||
|
||||
while(1);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user