From 132669672405dd412496013717d42a8d502bc620 Mon Sep 17 00:00:00 2001 From: SpookyDervish Date: Wed, 28 Jan 2026 21:32:16 +1100 Subject: [PATCH] kernel code cleanup --- OVMFbin/OVMF_VARS-pure-efi.fd | Bin 131072 -> 131072 bytes kernel/bin/CustomOS.img | Bin 48000000 -> 48000000 bytes kernel/bin/kernel.elf | Bin 18144 -> 18672 bytes kernel/lib/PageFrameAllocator.o | Bin 5664 -> 0 bytes kernel/lib/kernel.o | Bin 3768 -> 1840 bytes kernel/lib/kernelUtil.o | Bin 0 -> 3880 bytes kernel/src/kernel.cpp | 80 +++----------------------------- kernel/src/kernelUtil.cpp | 51 ++++++++++++++++++++ kernel/src/kernelUtil.h | 30 ++++++++++++ 9 files changed, 87 insertions(+), 74 deletions(-) delete mode 100644 kernel/lib/PageFrameAllocator.o create mode 100644 kernel/lib/kernelUtil.o create mode 100644 kernel/src/kernelUtil.cpp create mode 100644 kernel/src/kernelUtil.h diff --git a/OVMFbin/OVMF_VARS-pure-efi.fd b/OVMFbin/OVMF_VARS-pure-efi.fd index dc5d36fcf6a1790ae015c2ed0fc4945bd1343cef..f6bce0b9f9b11e8338df05165003e63b510651d8 100644 GIT binary patch delta 82 zcmZo@;Am*z*ifOxxM=c0EA7b#%(hHU2stuYz-j~I;>`!GKJzjzfly0<)JERPQ7KN0 i%Ye+YoSU=qrZsL(DEh*?>B9w<=7ulZ8@@0aa03AFmnH=O delta 83 zcmZo@;Am*z*ifOxIAiibEA7b#%(hHU2stuYz-j~I%*_X_KJzlpf>5&|)EpqSk#}-h em=oh%AoDEe=CXuojhjAPU};wPy15|5fExe?vL%rK diff --git a/kernel/bin/CustomOS.img b/kernel/bin/CustomOS.img index 4b24e933fb8f2e6a808f1621d1b196b4c493241a..6a763282b77273047a8900fad7390bc501159272 100644 GIT binary patch delta 6981 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 delta 6625 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 diff --git a/kernel/bin/kernel.elf b/kernel/bin/kernel.elf index 3afc65f2d2ba55e53a3aed1dac03413473729f33..6de91656dd5b5983295eca4e4837e38aff2784ca 100755 GIT binary patch delta 3838 zcmZ`+4Nz3q6~1rf@uL#ZR*@gs1q4K*@~4791@X~mBNep}<4D&P7NH{0Wl2h+EXJR9 zv)K&xCKGi`r^%R!No{IN$AFWmOUOXlX)I~eOw8C8n>wyhM{F?_gV}!f-Lv3q+B?HN z=X~eyo^#K8ZyE6_qeqnPd6~}X%vdFouu+W|kP=qN!m-a}GmflDi7Jejs=_0UOQZbZ zQt%&nWkuHTG;)fSGz>)i?Z}n#jufI?Q8H)!FVx(#Rk6go^aD34b@#sBI^7eNz7S5j zTf3X<(>+?R?jG`QGZ~1KJ(ZCL?updB+OY1vAS}x61Oh;P@OxkP&e=W}4u45>c~vK|eVx&?;;t%RqbC9%49)ee~G?m_=qQH@u%3DG;}*|9*trDvfK z6yw2PzkjBFz^6d|1o9`kcUc2WbZ>Nu;s37g{-gi2YJ`X}kRkue5hAiS0{fA3443g+ z<5Z|TO62lXji4E4bhpur?nnU%QGF>B?2y*$66V)aVb}{zFLHGXjeAh!dRo};*Lp=< zXhl^PNl}%j;(fY-R0ZlHtvBW;zJtE@-$)BMh=chjrIJWpH3GS{QGlaHwO&`H0>O{G zYo_x49+PCCZp~+$%?HT`o6j*jLlW33?4un=xK;Z%~u~0f=68^$YOaR>I#0sa>(@OQT}0S+TzqH#~-9VU{ogr zkGe;YV6Yv$E#~d4=FnpBE&UaeoSb*>cd7e#=Pdyfx`L zV0pmmtPniv+kymBzR6S4x|A*a)wG)Q0W)JY1Kq|A8n>tRe+_w^FIaF-d5@dZ2TUxP z|1nRyCtRl@nm!dBCk=$<3WU&4DLa?DC0V~^S$&GsfsV{@ak z(bm-Xl)cW<)?Qm{Z)>Y>Z))mDu`GPjZmDamYtD39Y8|$=21`>*Qx>n!-KQ0!q-S#-GIv6Aq23D>`mKc1iHngCY^OT`2@XgO^{nHdpjSSA72t_1>R z!ZoPx6j~Xn82Se26Cc!9PwBTqUkm+=2leHX`f#=v2H)Yw@)N^PfIEGSpUY1Oe+TS^ zYy8vv1oaZw0zMA?1i0^C=f?|@O&6~7b0F*n{}iPD2ESL3tQ_U>1xaDk7@Ocl1xYHH zB{%uDfq%cmixW?}Onx z;7a&KaF@U(@o^YVfUCRB6P720C*cj-b(^mQTMYK_ZN6>!-*PviY!g#hVYH~9F{4eO zo%j>@7Q&780Q)KLUmh3#1~`R9u?Sfbft`Gr;qh}|_C7Z=8E2c%|d&-_1l9`IR+ z`Qwn7WrVXl8Ka9rJqCO>PVujANMIJ>`+>)@h(&Ce0uj!hBZn;XM6An_uoHY%VVvvd z(2De3A?eSO*BJf0Fy;`Re+t^uFM}?McGbX5%r{R0t%L_C&Sr{}N_aGe24%R|2Q>fx zAjNzrVo_h{S|lAWj1T5@Qk;T9bmCMczKBRCgGudxc>XHtEnHs!rBS{${5|#TM5Hm9S#){t|aVAgMK*toWI13cPy zTGv|*&)VJA+J@cMdRt=?U%KkW*jC#v`*&?So9q>~X0Q%Eu&Oabrd{7$--496`IQcP ztIc7ru1(Fx;;>em!(r>- z*UDZ}Ug!JQEsYAkb$z^VUG{wOG~kgmRu28omy;#sNM5SNMFl@xtN7)0X2r@C%^a`6 zK+KIX3!qc~^A%~CrCWiB>j`SRQy^e<(}Zlr3_rMn8G_hO{)%Q+hIv2sUHq~Zr}+7} rwq{P`3TY83Qe%miYz(g`&z>H;+5p&|2>wj@@~C~{d|0i#zuf#^Xn#2R delta 3487 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 literal 3768 zcmbtWU1(fI6rRmbo7Vgp6slEv4gR$LTyj$yvPEUvILXv@o6BwjTGZuc_a+;&f8M=Y zlfKwmm0Xscqe2Yb8ZD~_qY92!IMG#ads1JP*^B}}?=FZ$qZgxfRz}%Vh z&3De6bLMCFJ$h=iB@!W0BIISVrAd^K;Rm+HF+PluZqh|2nfGh$%^TRU3%}Q3hIwDl zZ*Fd8Shek`gIuQ@Mx9kZM3hy{j$qiqmgpMu?l5ol9=c>p5BnXWcO_b->lf>Nt8@+L zJh~p3$M&)6CEw|*+BI(Z*L~*E%WSnBH57FyBVbzK!UPv0u2?TydWoBOw?s7Diwx=z z#6&-3RcPPd>tq+}5zw!Kew8g9;dV=1zWH_LeZS3vOwXgsz+b*bdI|Z)=ZeIulgm(x z^Geoil`bOXw*#y?xyY*VMW3)$tP4N@M?nJSR$7otHGWyGY?Lncd|dyaUil*6gC*=0 zT~UEp2W#g}Jz9rQ>payZGXmokCiA-$3~V>}iFMoNsMw^%;C>#|PtRBlkCVOaRatM7e#om1naZ>jbq=;qw>)dtBgB=dl6y zBs91UJ0#fzFEzo>H^FZ`ApVo=jCMjb0}PgSO;ZO4q7 z$x$OUI(~Yh0sV;S%obc~o=lUmTye_E9n0m4Y0E7-oIH$ogF6dwV<=%;89I6*&M#5i zDp7OL06i6_@$tm#saI%nByqx=7*FK$Bz2M}K?@l9J81k}21CTr3!HGgHep0Y_av%jP zsuOk&pL(!*{cJC4>u=+zH{*&s~9||2@zoj`slt{qKb)@m~-GK^*^LNPHKZSClZ` zrQjH+#tA@3r)EMZq6b@IM5Od8zSl zD10^kN011Dd8z&_1y|$D3LHD!cm9tG`gaw+y6=}1T=jo5ntlbj diff --git a/kernel/lib/kernelUtil.o b/kernel/lib/kernelUtil.o new file mode 100644 index 0000000000000000000000000000000000000000..71589d4deb4351c5db8be6052d7750e13ad4224e GIT binary patch literal 3880 zcmbtXO>7%g5PqAcZGg0KE0BuXgH-`)`LVJojT!{SN!a8?NgCrc2m;l1V{aN0+v~13 zAqlil6_6~;QpJS>9C~ZGAdq?pJ%FK76AnNwpdNa#kU)_rQjvh>P$|s3ePh3DY=p!} z?`OXGX6DU!_iggFG1S+jX^cc;$5~Ayl(DG?YWt|zMp+x%&Bl1)mrJLvJ65h27& z&k5hcjWw~BgflNaB(%e;5OEc_tNiP=R(`RpfqoP8o4juV*1uJwR zCToj^cyV}z7rw7X?J}0yJ}AFip1JBX!2$cYR@I^{e7gu#Fzx_&M-*F%X|P|blNQl} zQ5Hul1E*YvbHOP4M;pU5ceu97yNt5?9VnHygU~*|O261kfUYO`6aG)^Z5N&UmL7l* zJOJy+s1}5KD4`f@5io9py%phQ2tU`R=F7)x?bgP|#;NPrXjS@qd!Gp(>OV1dIIJIy zbVT%UM|($SyWW08u$o~G!@wLsVogjdBSz1-7SJCA8;Z6NXWCpy+uypg~B?%L4<1W?iTEaD(q6HH{^c27eF+FwH>NH0!gKVS2I3vrPBIFbFOn*C$M zLBy*__CDY4Tei+vXEXa_W2=R+ZPhN+tni3pkJupA03yx;>+>)WpOiRV2PXjEtHcq# z0nCK42Qrgjk5FERfjH^3z6m(SA%D?Bz&?b5X9~&{0P5kl8{l^v;LXsWdT}0afWO!P zHyhv=8{nTbz<&fB`_Ll$ES?oCe%f}kc6!W9r6Y-4j+x_6>!z9aEH9NXQ`wZ4veKyq z(44GkWs_#o&U@}mLg?+Y%FFKm4&Sfsq`Z;*Unk4J#1$jcRqHk$8kJC?oT@tR=PW#b`qB7AoqlRECz0Uu9dN? zxZWAJt)$U6;0GACaz?B}2i+VthDYMBm@gQkz43wA$&q*_!^}ZZtC3C8cGR<6uTk)> zAty17IrBzr7Q7oAL66&KXP_&{G@v8nof$imx4qcxl<(Au7PazT-H3HnK@oThrweNF zi-P2%?Iy7FBmK7LW231B``-#3*EIRdDmm+)ZzC&7R*gZ`8^_zkA~6t5FDcpo(K5AsQ; zRR`aC^}mdlAqdrp_2c_PeuVb`hBdXrP^B#E$G`7Xq55eZ1S9QL-mU-GzgNKtf2tt8 zB7xw!==_u`4;#!M^bg5~ihp2;3~SIo3s}AW8pYHV5y_ kdi}?5U+}j_|3xH&{26F&Koxg-J^wX%{&Rkq>Kyd{2k(^G4gdfE literal 0 HcmV?d00001 diff --git a/kernel/src/kernel.cpp b/kernel/src/kernel.cpp index e934860..9e0ae7d 100644 --- a/kernel/src/kernel.cpp +++ b/kernel/src/kernel.cpp @@ -1,81 +1,13 @@ -#include -#include -#include "BasicRenderer.h" -#include "cstr.h" -#include "efiMemory.h" -#include "memory.h" -#include "Bitmap.h" -#include "paging/PageFrameAllocator.h" -#include "paging/PageMapIndexer.h" -#include "paging/paging.h" -#include "paging/PageTableManager.h" - -struct BootInfo { - Framebuffer* framebuffer; - PSF1_FONT* psf1_Font; - EFI_MEMORY_DESCRIPTOR* mMap; - uint64_t mMapSize; - uint64_t mMapDescriptorSize; -}; - -// supposed to protect against stack smashing but we have no way to actually like -// do anything when we detect it soooo... -extern "C" void __stack_chk_fail(void) { - return; -} - -extern uint64_t _KernelStart; -extern uint64_t _KernelEnd; +#include "kernelUtil.h" extern "C" void _start(BootInfo* bootInfo) { - - - + KernelInfo kernelInfo = InitializeKernel(bootInfo); BasicRenderer newRenderer = BasicRenderer(bootInfo->framebuffer, bootInfo->psf1_Font); + PageTableManager* pageTableManager = kernelInfo.pageTableManager; - newRenderer.Print("Setting up memory map..."); + newRenderer.Print("Kernel initialized successfully! (we didn't crash lol)"); newRenderer.cursorPosition = {0, newRenderer.cursorPosition.y + 18}; - // display information of memory map - uint64_t mMapEntries = bootInfo->mMapSize / bootInfo->mMapDescriptorSize; - - GlobalAllocator = PageFrameAllocator(); - GlobalAllocator.ReadEFIMemoryMap(bootInfo->mMap, bootInfo->mMapSize, bootInfo->mMapDescriptorSize); - - // ensure we don't absolutely fuck shit up - uint64_t kernelSize = (uint64_t)&_KernelEnd - (uint64_t)&_KernelStart; - uint64_t kernelPages = (uint64_t)kernelSize / 4096 + 1; - GlobalAllocator.LockPages(&_KernelStart, kernelPages); - - // create page map - PageTable* PML4 = (PageTable*)GlobalAllocator.RequestPage(); - memset(PML4, 0, 0x1000); - - PageTableManager pageTableManager = PageTableManager(PML4); - - for (uint64_t t = 0; t < GetMemorySize(bootInfo->mMap, mMapEntries, bootInfo->mMapDescriptorSize); t += 0x1000) { - pageTableManager.MapMemory((void*)t, (void*)t); - } - - uint64_t fbBase = (uint64_t)bootInfo->framebuffer->BaseAddress; - uint64_t fbSize = (uint64_t)bootInfo->framebuffer->BufferSize + 0x1000; - GlobalAllocator.LockPages((void*)fbBase, fbSize / 0x1000 + 1); - for (uint64_t t = fbBase; t < fbBase + fbSize; t += 4096) { - pageTableManager.MapMemory((void*)t, (void*)t); - } - - asm("mov %0, %%cr3" :: "r" (PML4)); - memset(bootInfo->framebuffer->BaseAddress, 0, bootInfo->framebuffer->BufferSize); - - newRenderer.Print("Page map set up!"); - pageTableManager.MapMemory((void*)0x600000000, (void*)0x80000); - - uint64_t* test = (uint64_t*)0x600000000; - *test = 26; - - newRenderer.cursorPosition = {0, newRenderer.cursorPosition.y + 18}; - newRenderer.Print("this should be \"26\": "); - newRenderer.Print(to_string(*test)); - - return; + // make sure we never return from our OS + while (true); } \ No newline at end of file diff --git a/kernel/src/kernelUtil.cpp b/kernel/src/kernelUtil.cpp new file mode 100644 index 0000000..10347aa --- /dev/null +++ b/kernel/src/kernelUtil.cpp @@ -0,0 +1,51 @@ +// supposed to protect against stack smashing but we have no way to actually like +// do anything when we detect it soooo... +extern "C" void __stack_chk_fail(void) { + return; +} + +#include "kernelUtil.h" + +KernelInfo kernelInfo; +PageTableManager pageTableManager = NULL; +void PrepareMemory(BootInfo* bootInfo){ + uint64_t mMapEntries = bootInfo->mMapSize / bootInfo->mMapDescriptorSize; + + GlobalAllocator = PageFrameAllocator(); + GlobalAllocator.ReadEFIMemoryMap(bootInfo->mMap, bootInfo->mMapSize, bootInfo->mMapDescriptorSize); + + uint64_t kernelSize = (uint64_t)&_KernelEnd - (uint64_t)&_KernelStart; + uint64_t kernelPages = (uint64_t)kernelSize / 4096 + 1; + + GlobalAllocator.LockPages(&_KernelStart, kernelPages); + + PageTable* PML4 = (PageTable*)GlobalAllocator.RequestPage(); + memset(PML4, 0, 0x1000); + + pageTableManager = PageTableManager(PML4); + + for (uint64_t t = 0; t < GetMemorySize(bootInfo->mMap, mMapEntries, bootInfo->mMapDescriptorSize); t+= 0x1000){ + pageTableManager.MapMemory((void*)t, (void*)t); + } + + uint64_t fbBase = (uint64_t)bootInfo->framebuffer->BaseAddress; + uint64_t fbSize = (uint64_t)bootInfo->framebuffer->BufferSize + 0x1000; + GlobalAllocator.LockPages((void*)fbBase, fbSize/ 0x1000 + 1); + for (uint64_t t = fbBase; t < fbBase + fbSize; t += 4096){ + pageTableManager.MapMemory((void*)t, (void*)t); + } + + asm ("mov %0, %%cr3" : : "r" (PML4)); + + kernelInfo.pageTableManager = &pageTableManager; +} + + +KernelInfo InitializeKernel(BootInfo* bootInfo){ + + PrepareMemory(bootInfo); + + memset(bootInfo->framebuffer->BaseAddress, 0, bootInfo->framebuffer->BufferSize); + + return kernelInfo; +} \ No newline at end of file diff --git a/kernel/src/kernelUtil.h b/kernel/src/kernelUtil.h new file mode 100644 index 0000000..9beba51 --- /dev/null +++ b/kernel/src/kernelUtil.h @@ -0,0 +1,30 @@ +#pragma once + +#include +#include +#include "BasicRenderer.h" +#include "cstr.h" +#include "efiMemory.h" +#include "memory.h" +#include "Bitmap.h" +#include "paging/PageFrameAllocator.h" +#include "paging/PageMapIndexer.h" +#include "paging/paging.h" +#include "paging/PageTableManager.h" + +struct BootInfo { + Framebuffer* framebuffer; + PSF1_FONT* psf1_Font; + EFI_MEMORY_DESCRIPTOR* mMap; + uint64_t mMapSize; + uint64_t mMapDescriptorSize; +}; + +extern uint64_t _KernelStart; +extern uint64_t _KernelEnd; + +struct KernelInfo { + PageTableManager* pageTableManager; +}; + +KernelInfo InitializeKernel(BootInfo* bootInfo); \ No newline at end of file