diff --git a/Kernel/ACPI/Parser.cpp b/Kernel/ACPI/Parser.cpp index 6053971383..213d796178 100644 --- a/Kernel/ACPI/Parser.cpp +++ b/Kernel/ACPI/Parser.cpp @@ -71,11 +71,13 @@ UNMAP_AFTER_INIT void Parser::init_fadt() m_fadt = find_table("FACP"); VERIFY(!m_fadt.is_null()); - auto sdt = map_typed(m_fadt); + // FIXME: We need at least two pages for mapping, since we can be on the "edge" of one page... + auto sdt = map_typed(m_fadt, PAGE_SIZE * 2); dbgln_if(ACPI_DEBUG, "ACPI: FADT @ V{}, {}", &sdt, m_fadt); - dmesgln("ACPI: Fixed ACPI data, Revision {}, length: {} bytes", sdt->h.revision, sdt->h.length); + auto* header = &sdt.ptr()->h; + dmesgln("ACPI: Fixed ACPI data, Revision {}, length: {} bytes", (size_t)header->revision, (size_t)header->length); dmesgln("ACPI: DSDT {}", PhysicalAddress(sdt->dsdt_ptr)); m_x86_specific_flags.cmos_rtc_not_present = (sdt->ia_pc_boot_arch_flags & (u8)FADTFlags::IA_PC_Flags::CMOS_RTC_Not_Present);