The pointer to the DSDT may be 64-bit as well. In that case the
32-bit field will be zero and we have to use the 64-bit field.
ok?
Index: acpidump.c
===================================================================
RCS file: /cvs/src/usr.sbin/acpidump/acpidump.c,v
retrieving revision 1.18
diff -u -p -r1.18 acpidump.c
--- acpidump.c 24 Jun 2018 10:39:59 -0000 1.18
+++ acpidump.c 30 Jun 2018 18:41:51 -0000
@@ -532,7 +532,10 @@ acpi_handle_facp(struct FACPbody *facp)
struct ACPIsdt *dsdp;
acpi_print_facp(facp);
- dsdp = (struct ACPIsdt *) acpi_map_sdt(facp->dsdt_ptr);
+ if (facp->dsdt_ptr == 0)
+ dsdp = (struct ACPIsdt *) acpi_map_sdt(facp->x_dsdt);
+ else
+ dsdp = (struct ACPIsdt *) acpi_map_sdt(facp->dsdt_ptr);
if (acpi_checksum(dsdp, dsdp->len))
errx(1, "DSDT is corrupt");
acpi_handle_dsdt(dsdp);