From fa9d74fb1cf4467ff6d73aaa062602462f8ad068 Mon Sep 17 00:00:00 2001 From: SpookyDervish Date: Thu, 29 Jan 2026 16:21:40 +1100 Subject: [PATCH] print out PCI tables --- OVMFbin/OVMF_VARS-pure-efi.fd | Bin 131072 -> 131072 bytes kernel/bin/CustomOS.img | Bin 48000000 -> 48000000 bytes kernel/bin/kernel.elf | Bin 35128 -> 35208 bytes kernel/lib/kernel.o | Bin 2544 -> 1832 bytes kernel/lib/kernelUtil.o | Bin 7472 -> 8496 bytes kernel/src/acpi.h | 33 +++++++++++++++++++++++++++++++++ kernel/src/kernel.cpp | 8 -------- kernel/src/kernelUtil.cpp | 29 ++++++++++++++++++++++++++--- kernel/src/kernelUtil.h | 3 ++- 9 files changed, 61 insertions(+), 12 deletions(-) create mode 100644 kernel/src/acpi.h diff --git a/OVMFbin/OVMF_VARS-pure-efi.fd b/OVMFbin/OVMF_VARS-pure-efi.fd index 500991e7d2342c67fd2da642942dc10ebc8e51e9..eee6b9efa8542381a4fd089eb48ea012b58fd09a 100644 GIT binary patch delta 58 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 L009IL7&c!4G;n#7 diff --git a/kernel/bin/CustomOS.img b/kernel/bin/CustomOS.img index 9955a6b60d60efc3ffe85b42c28a29bc50325d75..9db85bea3051564a87ec51a030c8670dff2605ee 100644 GIT binary patch delta 7811 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 delta 7746 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 Syi8aV>0(Wiyo7@6G5-ZW3;Nms delta 4616 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 F@PFV9=~Ms! diff --git a/kernel/lib/kernel.o b/kernel/lib/kernel.o index 49acf506439be43a07dd362a275218385f2b5bb7..d0b11ebc70655fba5b22c5d7306b07dcd1482724 100644 GIT binary patch delta 219 zcmew$yn=6n2Ga}XiCQ_6S23zhKEoKn6w5GKjVX&WmH`5UCvRjDpS*#oVzL8sm#Cpd zKv8~jYH_h|era)PKw@%sYDwAT|I8D4!=dU~fHdc1S+>uNv6CmV%TG37m*CpL1d&|9 zFgb|bjB)PdjcnqR7qDwUSr6DXnC3D}=Hjqp+zFOS;Lu-a+-5iFheABK=uLvGBP+4 delta 828 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 OX%XN!Yc1aV_WuReS*?}; diff --git a/kernel/src/acpi.h b/kernel/src/acpi.h new file mode 100644 index 0000000..48ff176 --- /dev/null +++ b/kernel/src/acpi.h @@ -0,0 +1,33 @@ +#pragma once +#include + +namespace ACPI { + struct RSDP2 { + unsigned char Signature[8]; + uint8_t Checksum; + uint8_t OEMID[6]; + uint8_t Revision; + uint32_t RSDTAddress; + uint32_t Length; + uint64_t XSDTAddress; + uint8_t ExtendedChecksum; + uint8_t Reserved[3]; + }__attribute__((packed)); + + struct SDTHeader { + unsigned char Signature[4]; + uint32_t Length; + uint8_t Revision; + uint8_t Checksum; + uint8_t OEMID[6]; + uint8_t OEMTableID[8]; + uint32_t OEMRevision; + uint32_t CreatorID; + uint32_t CreatorRevision; + }__attribute__((packed)); + + struct MCFGHeader { + SDTHeader Header; + uint64_t Reserved; + }__attribute__((packed)); +}; \ No newline at end of file diff --git a/kernel/src/kernel.cpp b/kernel/src/kernel.cpp index ae73fcd..101b97b 100644 --- a/kernel/src/kernel.cpp +++ b/kernel/src/kernel.cpp @@ -6,14 +6,6 @@ extern "C" void _start(BootInfo* bootInfo) { GlobalRenderer->Print(to_hstring((uint64_t)bootInfo->rsdp)); GlobalRenderer->Next(); - GlobalRenderer->PutChar(*(uint8_t*)bootInfo->rsdp); - GlobalRenderer->PutChar(*((uint8_t*)bootInfo->rsdp + 1)); - GlobalRenderer->PutChar(*((uint8_t*)bootInfo->rsdp + 2)); - GlobalRenderer->PutChar(*((uint8_t*)bootInfo->rsdp + 3)); - GlobalRenderer->PutChar(*((uint8_t*)bootInfo->rsdp + 4)); - GlobalRenderer->PutChar(*((uint8_t*)bootInfo->rsdp + 5)); - GlobalRenderer->PutChar(*((uint8_t*)bootInfo->rsdp + 6)); - GlobalRenderer->PutChar(*((uint8_t*)bootInfo->rsdp + 7)); while (true) { ProcessMousePacket(); diff --git a/kernel/src/kernelUtil.cpp b/kernel/src/kernelUtil.cpp index e40017e..72aea4c 100644 --- a/kernel/src/kernelUtil.cpp +++ b/kernel/src/kernelUtil.cpp @@ -13,6 +13,9 @@ extern "C" void __stack_chk_fail(void) { KernelInfo kernelInfo; PageTableManager pageTableManager = NULL; void PrepareMemory(BootInfo* bootInfo){ + GlobalRenderer->Print(" - Locking kernel pages..."); + GlobalRenderer->Next(); + uint64_t mMapEntries = bootInfo->mMapSize / bootInfo->mMapDescriptorSize; GlobalAllocator = PageFrameAllocator(); @@ -23,6 +26,9 @@ void PrepareMemory(BootInfo* bootInfo){ GlobalAllocator.LockPages(&_KernelStart, kernelPages); + GlobalRenderer->Print(" - Setting up page table manager..."); + GlobalRenderer->Next(); + PageTable* PML4 = (PageTable*)GlobalAllocator.RequestPage(); memset(PML4, 0, 0x1000); @@ -53,6 +59,21 @@ void SetIDTGate(void* handler, uint8_t entryOffset, uint8_t type_attr, uint8_t s interrupt->selector = selector; } +void PrepareACPI(BootInfo* bootInfo) { + ACPI::SDTHeader* xsdt = (ACPI::SDTHeader*)(bootInfo->rsdp->XSDTAddress); + + int entries = (xsdt->Length - sizeof(ACPI::SDTHeader)) / 8; + for (int t = 0; t < entries; t++) { + ACPI::SDTHeader* newSDTHeader = (ACPI::SDTHeader*)*(uint64_t*)((uint64_t)xsdt + sizeof(ACPI::SDTHeader) + (t * 8)); + for (int i = 0; i < 4; i++) { + GlobalRenderer->PutChar(newSDTHeader->Signature[i]); + } + GlobalRenderer->PutChar(' '); + } + + GlobalRenderer->Next(); +} + void PrepareInterrupts() { idtr.Limit = 0x0FFF; idtr.Offset = (uint64_t)GlobalAllocator.RequestPage(); @@ -88,13 +109,11 @@ KernelInfo InitializeKernel(BootInfo* bootInfo){ gdtDescriptor.Offset = (uint64_t)&DefaultGDT; LoadGDT(&gdtDescriptor); - GlobalRenderer->Print("Preparing memory... (this doesn't always work, you may need to restart. sorry.)"); + GlobalRenderer->Print("Preparing memory..."); GlobalRenderer->Next(); PrepareMemory(bootInfo); - //memset(bootInfo->framebuffer->BaseAddress, 0, bootInfo->framebuffer->BufferSize); - GlobalRenderer->Print("Setting up interrupts..."); GlobalRenderer->Next(); @@ -104,6 +123,10 @@ KernelInfo InitializeKernel(BootInfo* bootInfo){ GlobalRenderer->Next(); InitPS2Mouse(); + GlobalRenderer->Print("Setting up ACPI..."); + GlobalRenderer->Next(); + PrepareACPI(bootInfo); + outb(PIC1_DATA, 0b11111001); // unmask 2nd interrupt outb(PIC2_DATA, 0b11101111); diff --git a/kernel/src/kernelUtil.h b/kernel/src/kernelUtil.h index d562392..5c9d102 100644 --- a/kernel/src/kernelUtil.h +++ b/kernel/src/kernelUtil.h @@ -12,6 +12,7 @@ #include "paging/paging.h" #include "paging/PageTableManager.h" #include "userinput/mouse.h" +#include "acpi.h" struct BootInfo { Framebuffer* framebuffer; @@ -19,7 +20,7 @@ struct BootInfo { EFI_MEMORY_DESCRIPTOR* mMap; uint64_t mMapSize; uint64_t mMapDescriptorSize; - void* rsdp; + ACPI::RSDP2* rsdp; }; extern uint64_t _KernelStart;