:: commit ab441fecdaf43368dcb3c237765129db29a13417

mintsuki <mintsuki@protonmail.com> — 2021-03-10 01:27

parents: 0ab68fa83e

acpi: Fix length of RSDP calculation

diff --git a/stage23/lib/acpi.c b/stage23/lib/acpi.c
index 2f9ddb8d..c5f2c3de 100644
--- a/stage23/lib/acpi.c
+++ b/stage23/lib/acpi.c
@@ -78,7 +78,10 @@ void *acpi_get_table(const char *signature, int index) {
     else
         rsdt = (struct rsdt *)(uintptr_t)rsdp->rsdt_addr;
 
-    for (size_t i = 0; i < rsdt->length - sizeof(struct sdt); i++) {
+    size_t entry_count =
+        (rsdt->length - sizeof(struct sdt)) / (use_xsdt ? 8 : 4);
+
+    for (size_t i = 0; i < entry_count; i++) {
         struct sdt *ptr;
         if (use_xsdt)
             ptr = (struct sdt *)(uintptr_t)((uint64_t *)rsdt->ptrs_start)[i];
tab: 248 wrap: offon