From cbefa0c30cc5ea257e3fbfd310a25268da9e1c91 Mon Sep 17 00:00:00 2001 From: Tyler McGurrin Date: Thu, 5 Jun 2025 18:59:35 -0400 Subject: [PATCH] Memory Management is Brutal... --- build.sh | 6 ++-- src/kernel/arch/i686/basicfunc.c | 6 ---- src/kernel/arch/i686/basicfunc.h | 8 ------ .../arch/i686/{basicfunc.asm => util.asm} | 28 +++++++++++++++++++ .../memory/phys_mem.c => arch/i686/util.c} | 2 +- src/kernel/arch/i686/util.h | 14 ++++++++++ src/kernel/core/memory/page.c | 9 ++++++ src/kernel/core/memory/{phys_mem.h => page.h} | 0 src/kernel/dri/keyboard.c | 2 +- src/kernel/main.c | 4 +-- src/libs/version.h | 2 +- 11 files changed, 60 insertions(+), 21 deletions(-) delete mode 100644 src/kernel/arch/i686/basicfunc.c delete mode 100644 src/kernel/arch/i686/basicfunc.h rename src/kernel/arch/i686/{basicfunc.asm => util.asm} (50%) rename src/kernel/{core/memory/phys_mem.c => arch/i686/util.c} (83%) create mode 100644 src/kernel/arch/i686/util.h create mode 100644 src/kernel/core/memory/page.c rename src/kernel/core/memory/{phys_mem.h => page.h} (100%) diff --git a/build.sh b/build.sh index 12ca553..f5fd9cb 100755 --- a/build.sh +++ b/build.sh @@ -38,12 +38,14 @@ case $yn in echo ------------- echo STARTING QEMU echo ------------- - qemu-system-i386 -chardev pty,id=serial1 \ + qemu-system-i386 \ + -chardev pty,id=serial1 \ -serial mon:stdio \ -serial chardev:serial1 \ -audiodev pa,id=speaker \ -machine pcspk-audiodev=speaker \ - -fda build/main_floppy.img + -fda build/main_floppy.img \ + -m size=512M echo -------- echo Finshed! echo -------- diff --git a/src/kernel/arch/i686/basicfunc.c b/src/kernel/arch/i686/basicfunc.c deleted file mode 100644 index 2234de9..0000000 --- a/src/kernel/arch/i686/basicfunc.c +++ /dev/null @@ -1,6 +0,0 @@ -/*----------------*\ -|Nanite OS | -|Copyright (C) 2024| -|Tyler McGurrin | -\*----------------*/ -#include "basicfunc.h" \ No newline at end of file diff --git a/src/kernel/arch/i686/basicfunc.h b/src/kernel/arch/i686/basicfunc.h deleted file mode 100644 index 5de607a..0000000 --- a/src/kernel/arch/i686/basicfunc.h +++ /dev/null @@ -1,8 +0,0 @@ -/*----------------*\ -|Nanite OS | -|Copyright (C) 2024| -|Tyler McGurrin | -\*----------------*/ -#pragma once - -void __attribute__((cdecl)) Reboot(); diff --git a/src/kernel/arch/i686/basicfunc.asm b/src/kernel/arch/i686/util.asm similarity index 50% rename from src/kernel/arch/i686/basicfunc.asm rename to src/kernel/arch/i686/util.asm index 74ad2ef..6ebb88a 100644 --- a/src/kernel/arch/i686/basicfunc.asm +++ b/src/kernel/arch/i686/util.asm @@ -14,3 +14,31 @@ Reboot: MOV AL, 0xFC OUT 0x64, AL + +global Read_CR0 +Read_CR0: + mov eax, cr0 + retn + +global Write_CR0 +Write_CR0: + push ebp + mov ebp, esp + mov eax, [ebp+8] + mov cr0, eax + pop ebp + retn + +global Read_CR3 +Read_CR3: + mov eax, cr3 + retn + +global Write_CR3 +Write_CR3: + push ebp + mov ebp, esp + mov eax, [ebp+8] + mov cr3, eax + pop ebp + retn diff --git a/src/kernel/core/memory/phys_mem.c b/src/kernel/arch/i686/util.c similarity index 83% rename from src/kernel/core/memory/phys_mem.c rename to src/kernel/arch/i686/util.c index e982541..99fa04e 100644 --- a/src/kernel/core/memory/phys_mem.c +++ b/src/kernel/arch/i686/util.c @@ -3,4 +3,4 @@ |Copyright (C) 2024| |Tyler McGurrin | \*----------------*/ -#include "phys_mem.h" \ No newline at end of file +#include "util.h" \ No newline at end of file diff --git a/src/kernel/arch/i686/util.h b/src/kernel/arch/i686/util.h new file mode 100644 index 0000000..80bd628 --- /dev/null +++ b/src/kernel/arch/i686/util.h @@ -0,0 +1,14 @@ +/*----------------*\ +|Nanite OS | +|Copyright (C) 2024| +|Tyler McGurrin | +\*----------------*/ +#pragma once + +#include + +void __attribute__((cdecl)) Reboot(); +void __attribute__((cdecl)) Read_CR0(); +void __attribute__((cdecl)) Write_CR0(uint8_t value); +void __attribute__((cdecl)) Read_CR3(); +void __attribute__((cdecl)) Write_CR3(uint8_t value); diff --git a/src/kernel/core/memory/page.c b/src/kernel/core/memory/page.c new file mode 100644 index 0000000..0fe01a0 --- /dev/null +++ b/src/kernel/core/memory/page.c @@ -0,0 +1,9 @@ +/*----------------*\ +|Nanite OS | +|Copyright (C) 2024| +|Tyler McGurrin | +\*----------------*/ +#include "page.h" + +unsigned long* Page_Directory = (unsigned long*) 0x9c000; +unsigned long* Page_Table = (unsigned long*) 0x9d000 diff --git a/src/kernel/core/memory/phys_mem.h b/src/kernel/core/memory/page.h similarity index 100% rename from src/kernel/core/memory/phys_mem.h rename to src/kernel/core/memory/page.h diff --git a/src/kernel/dri/keyboard.c b/src/kernel/dri/keyboard.c index ad9bf04..e475634 100644 --- a/src/kernel/dri/keyboard.c +++ b/src/kernel/dri/keyboard.c @@ -9,7 +9,7 @@ #include #include #include -#include +#include #include #include diff --git a/src/kernel/main.c b/src/kernel/main.c index 7a71077..336d8f9 100644 --- a/src/kernel/main.c +++ b/src/kernel/main.c @@ -8,7 +8,7 @@ #include #include #include -#include +#include #include #include #include @@ -64,7 +64,7 @@ void __attribute__((section(".entry"))) start(BootParams* bootParams) { printf("Initializing Basic Drivers..."); Serial_Init(DEBUG_COM_PORT, 9600); Keyboard_Init(); - Floppy_Init(); // This should always be last; its slow as fuck + // Floppy_Init(); // This should always be last; its slow as fuck printf("Done!\n"); diff --git a/src/libs/version.h b/src/libs/version.h index 7ca9c7e..4db63ec 100644 --- a/src/libs/version.h +++ b/src/libs/version.h @@ -6,5 +6,5 @@ #pragma once #define LOGO " _ _____ _ __________________\n / | / / | / | / / _/_ __/ ____/\n / |/ / /| | / |/ // / / / / __/ \n / /| / ___ |/ /| // / / / / /___ \n/_/ |_/_/ |_/_/ |_/___/ /_/ /_____/ \n" -#define VERSION "RD-00034" +#define VERSION "RD-00035" #define BOOTLOGO " _ ______ ____ ____ ______\n / | / / __ )/ __ \\/ __ /_ __/\n / |/ / __ / / / / / / // / \n / /| / /_/ / /_/ / /_/ // / \n/_/ |_/_____/\\____/\\____//_/ \n"