From 33e11f7c0f607f6fd55de96ecf8a3c8b5f9111ad Mon Sep 17 00:00:00 2001 From: Stefano Ceccherini Date: Wed, 17 Mar 2010 12:19:34 +0000 Subject: [PATCH] Squashed todo: only compute the numEntries once, and made it static. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35889 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/boot/platform/bios_ia32/acpi.cpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/system/boot/platform/bios_ia32/acpi.cpp b/src/system/boot/platform/bios_ia32/acpi.cpp index f27f3ee18b..0472eb1f17 100644 --- a/src/system/boot/platform/bios_ia32/acpi.cpp +++ b/src/system/boot/platform/bios_ia32/acpi.cpp @@ -33,7 +33,7 @@ static struct scan_spots_struct acpi_scan_spots[] = { }; static acpi_descriptor_header *sAcpiRsdt; // System Description Table - +static int32 sNumEntries = -1; static status_t acpi_check_rsdt(acpi_rsdp *rsdp) @@ -63,22 +63,21 @@ acpi_find_table(const char *signature) if (sAcpiRsdt == NULL) return NULL; - // Tried to keep numEntries a static variable; kept turning up 0 on table - // scan - // TODO: This calculates numEntries for every acpi probe. - int32 numEntries = (sAcpiRsdt->length - sizeof(acpi_descriptor_header)) / 4; - if (numEntries <= 0) { + if (sNumEntries == -1) + sNumEntries = (sAcpiRsdt->length - sizeof(acpi_descriptor_header)) / 4; + + if (sNumEntries <= 0) { TRACE(("acpi: root system description table is empty\n")); return NULL; } - TRACE(("acpi: searching %ld entries for table '%.4s'\n", numEntries, + TRACE(("acpi: searching %ld entries for table '%.4s'\n", sNumEntries, signature)); uint32 *pointer = (uint32 *)((uint8 *)sAcpiRsdt + sizeof(acpi_descriptor_header)); - for (int32 j = 0; j < numEntries; j++, pointer++) { + for (int32 j = 0; j < sNumEntries; j++, pointer++) { acpi_descriptor_header *header = (acpi_descriptor_header *) mmu_map_physical_memory(*pointer, sizeof(acpi_descriptor_header), kDefaultPageFlags);