From 35145022b56e8b1ec92e116c9282dceee6d956ce Mon Sep 17 00:00:00 2001 From: SpookyDervish Date: Wed, 28 Jan 2026 12:16:46 +1100 Subject: [PATCH] pass memory map to kernel and exit boot services --- OVMFbin/OVMF_VARS-pure-efi.fd | Bin 131072 -> 131072 bytes gnu-efi/bootloader/main.c | 37 +++++++++++++++++++++++++---- gnu-efi/x86_64/bootloader/main.efi | Bin 53305 -> 53817 bytes kernel/bin/CustomOS.img | Bin 48000000 -> 48000000 bytes kernel/bin/kernel.elf | Bin 10536 -> 10536 bytes kernel/lib/kernel.o | Bin 2688 -> 2688 bytes kernel/src/kernel.cpp | 12 ++++++++-- 7 files changed, 43 insertions(+), 6 deletions(-) diff --git a/OVMFbin/OVMF_VARS-pure-efi.fd b/OVMFbin/OVMF_VARS-pure-efi.fd index 1ee8d6179365532558534b8b15413d1e37a3dddf..80b9da2e1a685842ad3108ceb0136a279fb73380 100644 GIT binary patch delta 36 scmZo@;Am*z*idIR`J9c?<^@*oI5*ESQ)6Mw+Height, newBuffer->PixelsPerScanline); - KernelStart(newBuffer, newFont); + EFI_MEMORY_DESCRIPTOR* Map = NULL; + UINTN MapSize, MapKey; + UINTN DescriptorSize; + UINT32 DescriptorVersion; + { + + SystemTable->BootServices->GetMemoryMap(&MapSize, Map, &MapKey, &DescriptorSize, &DescriptorVersion); + SystemTable->BootServices->AllocatePool(EfiLoaderData, MapSize, (void**)&Map); + SystemTable->BootServices->GetMemoryMap(&MapSize, Map, &MapKey, &DescriptorSize, &DescriptorVersion); + + } + + // Run the kernel's main function! :D + void (*KernelStart)(BootInfo*) = ((__attribute__((sysv_abi)) void (*)(BootInfo*) ) header.e_entry); + + BootInfo bootInfo; + bootInfo.framebuffer = newBuffer; + bootInfo.psf1_Font = newFont; + bootInfo.mMap = Map; + bootInfo.mMapSize = MapSize; + bootInfo.mMapDescriptorSize = DescriptorSize; + + SystemTable->BootServices->ExitBootServices(ImageHandle, MapKey); + + KernelStart(&bootInfo); return EFI_SUCCESS; // Exit the UEFI application } diff --git a/gnu-efi/x86_64/bootloader/main.efi b/gnu-efi/x86_64/bootloader/main.efi index 7aa8acfa5b50986dafeffdbe5126761bb4c30138..64b50f88a76cc3ca7720f950059c7ea1309cf554 100755 GIT binary patch delta 6629 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 delta 349 zcmZ1xv?6Fi0_O=X1~53WG4s8It4C+)g%po&7F7+Pphu_c55of<-Jusex_xhW^twLq z=sf4qdHhA)xBvh5E8Gxbc;Wox|9_9pLm;_*|Ns97YB~O*XYv9`NsnWHFlFMt|Nnp7 z^#RDfj=0fG^%#0^CbE?ZT0RR9%raAxs diff --git a/kernel/lib/kernel.o b/kernel/lib/kernel.o index d089ee4395c10f742b2aeb2e53bc16fc17299ad9..c85e5cae24456cfd8c5ee686c494dd5c836c65bc 100644 GIT binary patch delta 320 zcmZn=Z4jLhESKWZ&7!Koz`)?q>H5R)fJe9M4Ug^s4hYS$F)y5P@(IQ{!u5&Pe2#^lV)#$3+G!_G08kzI1~1f~MUn$3*N`xzN6Cm&=HmvjcI0|6EwW(VRw{~;iJ z@<*U-AxH`cK(d@b43ljI%gzEx0Ra;bGXpV9cFE*GR&mB1AT^8^CN~1vPr&RylQ*)8 zOA3IT1_U58Ie-|ZOJnjwpsWoJ*^tSCY~qp`IAm)#JF>|$GB!_6WG`nr%n0framebuffer, bootInfo->psf1_Font); newRenderer.Print(0xFFFFFF, to_string((uint64_t)1234976)); newRenderer.cursorPosition = {0, 18}; newRenderer.Print(0xFFFFFF, to_string((int64_t)-1234976));