From 8fa7a5930cdec67ac00379ab241db67906d14fe0 Mon Sep 17 00:00:00 2001 From: slinky55 Date: Wed, 24 Jun 2026 21:52:05 -0500 Subject: [PATCH] fixed issues when running on hardware --- compile_commands.json | 46 ++++++------------------------------------- kernel/kmain.c | 4 +--- kernel/memory/mm.c | 4 ++++ 3 files changed, 11 insertions(+), 43 deletions(-) diff --git a/compile_commands.json b/compile_commands.json index 9b39093..e999a0e 100644 --- a/compile_commands.json +++ b/compile_commands.json @@ -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" } -] \ No newline at end of file +] diff --git a/kernel/kmain.c b/kernel/kmain.c index d9d4229..abd743f 100644 --- a/kernel/kmain.c +++ b/kernel/kmain.c @@ -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); diff --git a/kernel/memory/mm.c b/kernel/memory/mm.c index d212725..f20c37a 100644 --- a/kernel/memory/mm.c +++ b/kernel/memory/mm.c @@ -1,4 +1,5 @@ #include "memory/mm.h" +#include "lib/print.h" #include "multiboot.h" #include @@ -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() {