Pack the SPCR struct definition since the struct isn't naturally aligned
authorpatrick <patrick@openbsd.org>
Tue, 23 Mar 2021 09:41:12 +0000 (09:41 +0000)
committerpatrick <patrick@openbsd.org>
Tue, 23 Mar 2021 09:41:12 +0000 (09:41 +0000)
or padded, and hence e. g. the access to the PCI vendor/device id would be
broken.  The structs for the other tables all seem to be packed as well.

ok kettenis@

sys/arch/arm64/stand/efiboot/efiacpi.c
sys/dev/acpi/acpireg.h

index 4256a7f..4b315cc 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: efiacpi.c,v 1.10 2021/03/11 11:16:56 jsg Exp $        */
+/*     $OpenBSD: efiacpi.c,v 1.11 2021/03/23 09:41:12 patrick Exp $    */
 
 /*
  * Copyright (c) 2018 Mark Kettenis <kettenis@openbsd.org>
@@ -340,7 +340,7 @@ struct acpi_spcr {
        uint32_t        pci_flags;
        uint8_t         pci_segment;
        uint32_t        reserved3;
-};
+} __packed;
 
 /* We'll never see ACPI 1.0 tables on ARM. */
 static EFI_GUID acpi_guid = ACPI_20_TABLE_GUID;
index 0c80c31..f2ff1f0 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: acpireg.h,v 1.54 2021/03/15 22:40:23 patrick Exp $    */
+/*     $OpenBSD: acpireg.h,v 1.55 2021/03/23 09:41:12 patrick Exp $    */
 /*
  * Copyright (c) 2005 Thorsten Lockert <tholo@sigmasoft.com>
  * Copyright (c) 2005 Marco Peereboom <marco@openbsd.org>
@@ -448,7 +448,7 @@ struct acpi_spcr {
        uint32_t        pci_flags;
        uint8_t         pci_segment;
        uint32_t        reserved3;
-};
+} __packed;
 
 struct acpi_facs {
        uint8_t         signature[4];