fixed issues when running on hardware
This commit is contained in:
@@ -117,14 +117,12 @@ void kmain(uint32_t magic, multiboot_info* 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();
|
||||
extern uint64_t gdt[5];
|
||||
kprintf("GDT set @ 0x%x\n", &gdt);
|
||||
|
||||
|
||||
init_idt();
|
||||
extern idt_entry idt[256];
|
||||
kprintf("IDT set @ 0x%x\n", &idt);
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "memory/mm.h"
|
||||
#include "lib/print.h"
|
||||
#include "multiboot.h"
|
||||
|
||||
#include <stddef.h>
|
||||
@@ -61,6 +62,7 @@ static void parse_multiboot_mmap(void* base, uint32_t limit) {
|
||||
uint32_t usable_start, usable_end, usable_size;
|
||||
usable_size = align(region_start, entry->len, &usable_start, &usable_end);
|
||||
if (usable_size <= 4096) {
|
||||
entry = (multiboot_mmap_entry*)((uint32_t)entry + entry_size);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -139,6 +141,8 @@ void init_pmm(void* mmap_base, uint32_t mmap_limit) {
|
||||
if (mmap_base != NULL && mmap_limit > 0) {
|
||||
parse_multiboot_mmap(mmap_base, mmap_limit);
|
||||
}
|
||||
|
||||
kprintf("total free memory: %dMB\n", total_available_memory / 1024 / 1024);
|
||||
}
|
||||
|
||||
void init_page_tables() {
|
||||
|
||||
Reference in New Issue
Block a user