diff --git a/src/platform/acpi.cpp b/src/platform/acpi.cpp index f231ef2..a87a986 100644 --- a/src/platform/acpi.cpp +++ b/src/platform/acpi.cpp @@ -158,6 +158,8 @@ bool ACPI::ParseRsdp(const void *ptr) { if (sum) return false; + rsdpAddr = ptr; + char oem[7]; Memory::copy(oem, p + 9, 6); oem[6] = 0; @@ -240,6 +242,9 @@ ACPI::IOApicRedir ACPI::IOapicReadMap(uint32_t idx) { a.raw[1] = IOapicIn(IOAPIC_REDTBL + idx * 2 + 1); return a; } +const void* ACPI::getRSDPAddr() { + return rsdpAddr; +} void* ACPI::getLapicAddr() { return localApicAddr; } diff --git a/src/platform/include/acpi.hpp b/src/platform/include/acpi.hpp index c0c425e..5185ee2 100644 --- a/src/platform/include/acpi.hpp +++ b/src/platform/include/acpi.hpp @@ -108,6 +108,7 @@ class ACPI { static volatile ACPI *controller; char *localApicAddr, *ioApicAddr; + const void *rsdpAddr; uint8_t ioApicMaxCount; uint32_t acpiCpuIds[256]; uint8_t acpiCpuCount; @@ -126,6 +127,7 @@ class ACPI { static ACPI* getController(); uint32_t getLapicID(); uint32_t getCPUID(); + const void* getRSDPAddr() PURE; void* getLapicAddr() PURE; uint32_t getCPUCount() PURE; uint32_t getActiveCPUCount() PURE;