fixed issues when running on hardware
This commit is contained in:
@@ -1,53 +1,19 @@
|
||||
[
|
||||
{
|
||||
"file": "kernel/drivers/iso/iso.c",
|
||||
"arguments": [
|
||||
"/home/slinky/opt/cross/bin/i686-elf-gcc",
|
||||
"-c",
|
||||
"kernel/drivers/iso/iso.c",
|
||||
"-o",
|
||||
"obj/kernel/drivers/iso/iso.o",
|
||||
"-ffreestanding",
|
||||
"-O2",
|
||||
"-Wall",
|
||||
"-Wextra",
|
||||
"-Ikernel"
|
||||
],
|
||||
"directory": "/home/slinky/source/RockOS",
|
||||
"output": "obj/kernel/drivers/iso/iso.o"
|
||||
},
|
||||
{
|
||||
"file": "kernel/kmain.c",
|
||||
"arguments": [
|
||||
"/home/slinky/opt/cross/bin/i686-elf-gcc",
|
||||
"-c",
|
||||
"kernel/kmain.c",
|
||||
"-Ikernel",
|
||||
"-o",
|
||||
"obj/kernel/kmain.o",
|
||||
"-ffreestanding",
|
||||
"-O2",
|
||||
"-Wall",
|
||||
"-Wextra",
|
||||
"-Ikernel"
|
||||
"obj/kernel/boot/boot.o",
|
||||
"kernel/boot/boot.S"
|
||||
],
|
||||
"directory": "/home/slinky/source/RockOS",
|
||||
"output": "obj/kernel/kmain.o"
|
||||
},
|
||||
{
|
||||
"file": "kernel/drivers/pic/pic_stubs.S",
|
||||
"arguments": [
|
||||
"/home/slinky/opt/cross/bin/i686-elf-gcc",
|
||||
"-c",
|
||||
"kernel/drivers/pic/pic_stubs.S",
|
||||
"-o",
|
||||
"obj/kernel/drivers/pic/pic_stubs.o",
|
||||
"-ffreestanding",
|
||||
"-O2",
|
||||
"-Wall",
|
||||
"-Wextra",
|
||||
"-Ikernel"
|
||||
],
|
||||
"directory": "/home/slinky/source/RockOS",
|
||||
"output": "obj/kernel/drivers/pic/pic_stubs.o"
|
||||
"file": "/home/slinky/source/RockOS/kernel/boot/boot.S",
|
||||
"output": "/home/slinky/source/RockOS/obj/kernel/boot/boot.o"
|
||||
}
|
||||
]
|
||||
@@ -117,8 +117,6 @@ 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();
|
||||
|
||||
@@ -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