Map the whole table, and not just the header. Fix #7497 again (hopefully
correctly now) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42083 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
3e3ce16f5e
commit
fb764e7fda
@ -82,8 +82,9 @@ acpi_find_table(const char* signature)
|
||||
uint32* pointer = (uint32*)((uint8*)sAcpiRsdt
|
||||
+ sizeof(acpi_descriptor_header));
|
||||
|
||||
acpi_descriptor_header* header = NULL;
|
||||
for (int32 j = 0; j < sNumEntries; j++, pointer++) {
|
||||
acpi_descriptor_header* header = (acpi_descriptor_header*)
|
||||
header = (acpi_descriptor_header*)
|
||||
mmu_map_physical_memory(*pointer,
|
||||
sizeof(acpi_descriptor_header), kDefaultPageFlags);
|
||||
if (header == NULL
|
||||
@ -99,11 +100,19 @@ acpi_find_table(const char* signature)
|
||||
}
|
||||
|
||||
TRACE(("acpi: Found '%.4s' @ %p\n", signature, pointer));
|
||||
return header;
|
||||
break;
|
||||
}
|
||||
|
||||
// If we didn't find the table, return NULL.
|
||||
return NULL;
|
||||
|
||||
if (header == NULL)
|
||||
return NULL;
|
||||
|
||||
// Map the whole table, not just the header
|
||||
uint32 length = header->length;
|
||||
mmu_free(header, sizeof(acpi_descriptor_header));
|
||||
|
||||
return (acpi_descriptor_header*)mmu_map_physical_memory(*pointer,
|
||||
length, kDefaultPageFlags);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user