fixed issues when running on hardware

This commit is contained in:
2026-06-24 21:52:05 -05:00
parent bf0d1caa89
commit 8fa7a5930c
3 changed files with 11 additions and 43 deletions

View File

@@ -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"
}
]
]

View File

@@ -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);

View File

@@ -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() {