uint32_t asl_compiler_revision; /* ASL compiler revision number */
-struct AcpiTableHeader /* ACPI common table header */
-{
+/* ACPI common table header */
+struct AcpiTableHeader {
ACPI_TABLE_HEADER_DEF
} QEMU_PACKED;
typedef struct AcpiTableHeader AcpiTableHeader;
uint8_t duty_width; /* Bit width of duty cycle field in p_cnt reg */ \
uint8_t day_alrm; /* Index to day-of-month alarm in RTC CMOS RAM */ \
uint8_t mon_alrm; /* Index to month-of-year alarm in RTC CMOS RAM */ \
- uint8_t century; /* Index to century in RTC CMOS RAM */
-
-struct AcpiFadtDescriptorRev1
-{
- ACPI_FADT_COMMON_DEF
- uint8_t reserved4; /* Reserved */
- uint8_t reserved4a; /* Reserved */
- uint8_t reserved4b; /* Reserved */
- uint32_t flags;
-} QEMU_PACKED;
-typedef struct AcpiFadtDescriptorRev1 AcpiFadtDescriptorRev1;
+ uint8_t century; /* Index to century in RTC CMOS RAM */ \
+ /* IA-PC Boot Architecture Flags (see below for individual flags) */ \
+ uint16_t boot_flags; \
+ uint8_t reserved; /* Reserved, must be zero */ \
+ /* Miscellaneous flag bits (see below for individual flags) */ \
+ uint32_t flags; \
+ /* 64-bit address of the Reset register */ \
+ struct AcpiGenericAddress reset_register; \
+ /* Value to write to the reset_register port to reset the system */ \
+ uint8_t reset_value; \
+ /* ARM-Specific Boot Flags (see below for individual flags) (ACPI 5.1) */ \
+ uint16_t arm_boot_flags; \
+ uint8_t minor_revision; /* FADT Minor Revision (ACPI 5.1) */ \
+ uint64_t x_facs; /* 64-bit physical address of FACS */ \
+ uint64_t x_dsdt; /* 64-bit physical address of DSDT */ \
+ /* 64-bit Extended Power Mgt 1a Event Reg Blk address */ \
+ struct AcpiGenericAddress xpm1a_event_block; \
+ /* 64-bit Extended Power Mgt 1b Event Reg Blk address */ \
+ struct AcpiGenericAddress xpm1b_event_block; \
+ /* 64-bit Extended Power Mgt 1a Control Reg Blk address */ \
+ struct AcpiGenericAddress xpm1a_control_block; \
+ /* 64-bit Extended Power Mgt 1b Control Reg Blk address */ \
+ struct AcpiGenericAddress xpm1b_control_block; \
+ /* 64-bit Extended Power Mgt 2 Control Reg Blk address */ \
+ struct AcpiGenericAddress xpm2_control_block; \
+ /* 64-bit Extended Power Mgt Timer Ctrl Reg Blk address */ \
+ struct AcpiGenericAddress xpm_timer_block; \
+ /* 64-bit Extended General Purpose Event 0 Reg Blk address */ \
+ struct AcpiGenericAddress xgpe0_block; \
+ /* 64-bit Extended General Purpose Event 1 Reg Blk address */ \
+ struct AcpiGenericAddress xgpe1_block; \
struct AcpiGenericAddress {
uint8_t space_id; /* Address space where struct or register exists */
uint64_t address; /* 64-bit address of struct or register */
} QEMU_PACKED;
+struct AcpiFadtDescriptorRev3 {
+ ACPI_FADT_COMMON_DEF
+} QEMU_PACKED;
+typedef struct AcpiFadtDescriptorRev3 AcpiFadtDescriptorRev3;
+
struct AcpiFadtDescriptorRev5_1 {
ACPI_FADT_COMMON_DEF
- /* IA-PC Boot Architecture Flags (see below for individual flags) */
- uint16_t boot_flags;
- uint8_t reserved; /* Reserved, must be zero */
- /* Miscellaneous flag bits (see below for individual flags) */
- uint32_t flags;
- /* 64-bit address of the Reset register */
- struct AcpiGenericAddress reset_register;
- /* Value to write to the reset_register port to reset the system */
- uint8_t reset_value;
- /* ARM-Specific Boot Flags (see below for individual flags) (ACPI 5.1) */
- uint16_t arm_boot_flags;
- uint8_t minor_revision; /* FADT Minor Revision (ACPI 5.1) */
- uint64_t Xfacs; /* 64-bit physical address of FACS */
- uint64_t Xdsdt; /* 64-bit physical address of DSDT */
- /* 64-bit Extended Power Mgt 1a Event Reg Blk address */
- struct AcpiGenericAddress xpm1a_event_block;
- /* 64-bit Extended Power Mgt 1b Event Reg Blk address */
- struct AcpiGenericAddress xpm1b_event_block;
- /* 64-bit Extended Power Mgt 1a Control Reg Blk address */
- struct AcpiGenericAddress xpm1a_control_block;
- /* 64-bit Extended Power Mgt 1b Control Reg Blk address */
- struct AcpiGenericAddress xpm1b_control_block;
- /* 64-bit Extended Power Mgt 2 Control Reg Blk address */
- struct AcpiGenericAddress xpm2_control_block;
- /* 64-bit Extended Power Mgt Timer Ctrl Reg Blk address */
- struct AcpiGenericAddress xpm_timer_block;
- /* 64-bit Extended General Purpose Event 0 Reg Blk address */
- struct AcpiGenericAddress xgpe0_block;
- /* 64-bit Extended General Purpose Event 1 Reg Blk address */
- struct AcpiGenericAddress xgpe1_block;
/* 64-bit Sleep Control register (ACPI 5.0) */
struct AcpiGenericAddress sleep_control;
/* 64-bit Sleep Status register (ACPI 5.0) */
/*
* ACPI 1.0 Root System Description Table (RSDT)
*/
-struct AcpiRsdtDescriptorRev1
-{
+struct AcpiRsdtDescriptorRev1 {
ACPI_TABLE_HEADER_DEF /* ACPI common table header */
uint32_t table_offset_entry[0]; /* Array of pointers to other */
/* ACPI tables */
} QEMU_PACKED;
typedef struct AcpiRsdtDescriptorRev1 AcpiRsdtDescriptorRev1;
+/*
+ * ACPI 2.0 eXtended System Description Table (XSDT)
+ */
+struct AcpiXsdtDescriptorRev2 {
+ ACPI_TABLE_HEADER_DEF /* ACPI common table header */
+ uint64_t table_offset_entry[0]; /* Array of pointers to other */
+ /* ACPI tables */
+} QEMU_PACKED;
+typedef struct AcpiXsdtDescriptorRev2 AcpiXsdtDescriptorRev2;
+
/*
* ACPI 1.0 Firmware ACPI Control Structure (FACS)
*/
-struct AcpiFacsDescriptorRev1
-{
+struct AcpiFacsDescriptorRev1 {
uint32_t signature; /* ACPI Signature */
uint32_t length; /* Length of structure, in bytes */
uint32_t hardware_signature; /* Hardware configuration signature */
/* Master MADT */
-struct AcpiMultipleApicTable
-{
+struct AcpiMultipleApicTable {
ACPI_TABLE_HEADER_DEF /* ACPI common table header */
uint32_t local_apic_address; /* Physical address of local APIC */
uint32_t flags;
/* Sub-structures for MADT */
-struct AcpiMadtProcessorApic
-{
+struct AcpiMadtProcessorApic {
ACPI_SUB_HEADER_DEF
uint8_t processor_id; /* ACPI processor id */
uint8_t local_apic_id; /* Processor's local APIC id */
} QEMU_PACKED;
typedef struct AcpiMadtProcessorApic AcpiMadtProcessorApic;
-struct AcpiMadtIoApic
-{
+struct AcpiMadtIoApic {
ACPI_SUB_HEADER_DEF
uint8_t io_apic_id; /* I/O APIC ID */
uint8_t reserved; /* Reserved - must be zero */
* SRAT (NUMA topology description) table
*/
-struct AcpiSystemResourceAffinityTable
-{
+struct AcpiSystemResourceAffinityTable {
ACPI_TABLE_HEADER_DEF
uint32_t reserved1;
uint32_t reserved2[2];
#define ACPI_SRAT_PROCESSOR_x2APIC 2
#define ACPI_SRAT_PROCESSOR_GICC 3
-struct AcpiSratProcessorAffinity
-{
+struct AcpiSratProcessorAffinity {
ACPI_SUB_HEADER_DEF
uint8_t proximity_lo;
uint8_t local_apic_id;
} QEMU_PACKED;
typedef struct AcpiSratProcessorX2ApicAffinity AcpiSratProcessorX2ApicAffinity;
-struct AcpiSratMemoryAffinity
-{
+struct AcpiSratMemoryAffinity {
ACPI_SUB_HEADER_DEF
uint32_t proximity;
uint16_t reserved1;
} QEMU_PACKED;
typedef struct AcpiSratMemoryAffinity AcpiSratMemoryAffinity;
-struct AcpiSratProcessorGiccAffinity
-{
+struct AcpiSratProcessorGiccAffinity {
ACPI_SUB_HEADER_DEF
uint32_t proximity;
uint32_t acpi_processor_uid;
/*
* TPM2
*
- * Following Level 00, Rev 00.37 of specs:
- * http://www.trustedcomputinggroup.org/resources/tcg_acpi_specification
+ * Following Version 1.2, Revision 8 of specs:
+ * https://trustedcomputinggroup.org/tcg-acpi-specification/
*/
struct Acpi20TPM2 {
ACPI_TABLE_HEADER_DEF
uint16_t reserved;
uint64_t control_area_address;
uint32_t start_method;
+ uint8_t start_method_params[12];
+ uint32_t log_area_minimum_length;
+ uint64_t log_area_start_address;
} QEMU_PACKED;
typedef struct Acpi20TPM2 Acpi20TPM2;