From Fredrik Holmqvist <fredrik.holmqvist@xxxxxxxxx>:
Fredrik Holmqvist has uploaded this change for review. (
https://review.haiku-os.org/c/haiku/+/3545 ;)
Change subject: efi_guid struct gets equals, simplify EFI acpi_init
......................................................................
efi_guid struct gets equals, simplify EFI acpi_init
---
M headers/private/kernel/platform/efi/types.h
M src/system/boot/platform/efi/acpi.cpp
2 files changed, 16 insertions(+), 14 deletions(-)
git pull ssh://git.haiku-os.org:22/haiku refs/changes/45/3545/1
diff --git a/headers/private/kernel/platform/efi/types.h
b/headers/private/kernel/platform/efi/types.h
index 8aec555..2c1df00 100644
--- a/headers/private/kernel/platform/efi/types.h
+++ b/headers/private/kernel/platform/efi/types.h
@@ -82,6 +82,14 @@
uint16_t data2;
uint16_t data3;
uint8_t data4[8];
+
+ bool equals(const efi_guid& other) const {
+ bool matches = data1 == other.data1 && data2 == other.data2
+ && data3 == other.data3;
+ for (auto i = 0; matches && i < 8; i++)
+ matches = data4[i] == other.data4[i];
+ return matches;
+ }
} efi_guid;
typedef void* efi_handle;
diff --git a/src/system/boot/platform/efi/acpi.cpp
b/src/system/boot/platform/efi/acpi.cpp
index 3b5a45f..1f8f595 100644
--- a/src/system/boot/platform/efi/acpi.cpp
+++ b/src/system/boot/platform/efi/acpi.cpp
@@ -205,22 +205,16 @@
// Try to find the ACPI RSDP.
for (uint32 i = 0; i < entries; i++) {
- acpi_rsdp *rsdp = NULL;
+ if (!table[i].VendorGuid.equals(acpi))
+ continue;
- efi_guid vendor = table[i].VendorGuid;
+ acpi_rsdp *rsdp = (acpi_rsdp *)(table[i].VendorTable);
+ if (strncmp((char *)rsdp, ACPI_RSDP_SIGNATURE, 8) == 0)
+ TRACE(("acpi_init: found ACPI RSDP signature at %p\n",
rsdp));
- if (vendor.data1 == acpi.data1
- && vendor.data2 == acpi.data2
- && vendor.data3 == acpi.data3
- && strncmp((char *)vendor.data4, (char *)acpi.data4, 8)
== 0) {
- rsdp = (acpi_rsdp *)(table[i].VendorTable);
- if (strncmp((char *)rsdp, ACPI_RSDP_SIGNATURE, 8) == 0)
- TRACE(("acpi_init: found ACPI RSDP signature at
%p\n", rsdp));
-
- if (rsdp != NULL && acpi_check_rsdt(rsdp) == B_OK) {
- gKernelArgs.arch_args.acpi_root = rsdp;
- break;
- }
+ if (rsdp != NULL && acpi_check_rsdt(rsdp) == B_OK) {
+ gKernelArgs.arch_args.acpi_root = rsdp;
+ break;
}
}
}
--
To view, visit https://review.haiku-os.org/c/haiku/+/3545
To unsubscribe, or for help writing mail filters, visit
https://review.haiku-os.org/settings
Gerrit-Project: haiku
Gerrit-Branch: master
Gerrit-Change-Id: Id4bc985dc1e6f44b594f6ca5dabd3fdac8e1cac2
Gerrit-Change-Number: 3545
Gerrit-PatchSet: 1
Gerrit-Owner: Fredrik Holmqvist <fredrik.holmqvist@xxxxxxxxx>
Gerrit-MessageType: newchange