4 // Should be shared with FreeLDR
6 typedef struct _ACPI_E820_ENTRY
11 } ACPI_E820_ENTRY
, *PACPI_E820_ENTRY
;
13 typedef struct _ACPI_BIOS_MULTI_NODE
15 PHYSICAL_ADDRESS RsdtAddress
;
17 ACPI_E820_ENTRY E820Entry
[1];
18 } ACPI_BIOS_MULTI_NODE
, *PACPI_BIOS_MULTI_NODE
;
23 #define RSDP_SIGNATURE 0x2052545020445352 // "RSD PTR "
24 #define FACS_SIGNATURE 0x53434146 // "FACS"
25 #define FADT_SIGNATURE 0x50434146 // "FACP"
26 #define RSDT_SIGNATURE 0x54445352 // "RSDT"
27 #define APIC_SIGNATURE 0x43495041 // "APIC"
28 #define DSDT_SIGNATURE 0x54445344 // "DSDT"
29 #define SSDT_SIGNATURE 0x54445353 // "SSDT"
30 #define PSDT_SIGNATURE 0x54445350 // "PSDT"
31 #define SBST_SIGNATURE 0x54534253 // "SBST"
32 #define DBGP_SIGNATURE 0x50474244 // "DBGP"
33 #define XSDT_SIGNATURE 'TDSX'
34 #define BOOT_SIGNATURE 'TOOB'
35 #define SRAT_SIGNATURE 'TARS'
40 #define ACPI_TMR_VAL_EXT 0x100
43 // ACPI Generic Register Address
45 typedef struct _GEN_ADDR
51 PHYSICAL_ADDRESS Address
;
52 } GEN_ADDR
, *PGEN_ADDR
;
55 // ACPI BIOS Structures (packed)
68 typedef struct _DESCRIPTION_HEADER
80 typedef DESCRIPTION_HEADER
*PDESCRIPTION_HEADER
;
86 ULONG HardwareSignature
;
87 ULONG pFirmwareWakingVector
;
90 PHYSICAL_ADDRESS x_FirmwareWakingVector
;
98 DESCRIPTION_HEADER Header
;
103 USHORT sci_int_vector
;
104 ULONG smi_cmd_io_port
;
106 UCHAR acpi_off_value
;
108 UCHAR pstate_control
;
109 ULONG pm1a_evt_blk_io_port
;
110 ULONG pm1b_evt_blk_io_port
;
111 ULONG pm1a_ctrl_blk_io_port
;
112 ULONG pm1b_ctrl_blk_io_port
;
113 ULONG pm2_ctrl_blk_io_port
;
114 ULONG pm_tmr_blk_io_port
;
115 ULONG gp0_blk_io_port
;
116 ULONG gp1_blk_io_port
;
124 UCHAR cstate_control
;
131 UCHAR day_alarm_index
;
132 UCHAR month_alarm_index
;
133 UCHAR century_alarm_index
;
140 PHYSICAL_ADDRESS x_firmware_ctrl
;
141 PHYSICAL_ADDRESS x_dsdt
;
142 GEN_ADDR x_pm1a_evt_blk
;
143 GEN_ADDR x_pm1b_evt_blk
;
144 GEN_ADDR x_pm1a_ctrl_blk
;
145 GEN_ADDR x_pm1b_ctrl_blk
;
146 GEN_ADDR x_pm2_ctrl_blk
;
147 GEN_ADDR x_pm_tmr_blk
;
155 DESCRIPTION_HEADER Header
;
156 UCHAR DiffDefBlock
[ANYSIZE_ARRAY
];
162 DESCRIPTION_HEADER Header
;
163 ULONG Tables
[ANYSIZE_ARRAY
];
169 DESCRIPTION_HEADER Header
;
170 PHYSICAL_ADDRESS Tables
[ANYSIZE_ARRAY
];
176 // Microsoft-specific (pretty much) ACPI Tables, normal MS ABI packing
178 typedef struct _DEBUG_PORT_TABLE
180 DESCRIPTION_HEADER Header
;
183 GEN_ADDR BaseAddress
;
184 } DEBUG_PORT_TABLE
, *PDEBUG_PORT_TABLE
;
186 typedef struct _BOOT_TABLE
188 DESCRIPTION_HEADER Header
;
191 } BOOT_TABLE
, *PBOOT_TABLE
;
193 typedef struct _ACPI_SRAT
195 DESCRIPTION_HEADER Header
;
198 } ACPI_SRAT
, *PACPI_SRAT
;
201 // Internal HAL structure
203 typedef struct _ACPI_CACHED_TABLE
206 DESCRIPTION_HEADER Header
;
209 } ACPI_CACHED_TABLE
, *PACPI_CACHED_TABLE
;
213 HalpAcpiTableCacheInit(
214 IN PLOADER_PARAMETER_BLOCK LoaderBlock
220 IN PLOADER_PARAMETER_BLOCK LoaderBlock
,
227 IN PLOADER_PARAMETER_BLOCK LoaderBlock
233 IN PLOADER_PARAMETER_BLOCK LoaderBlock
,