aboutsummaryrefslogtreecommitdiff
path: root/tools/acpiexec/aetables.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/acpiexec/aetables.c')
-rw-r--r--tools/acpiexec/aetables.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/tools/acpiexec/aetables.c b/tools/acpiexec/aetables.c
index e846d54a3a30..b4b60f0c24d0 100644
--- a/tools/acpiexec/aetables.c
+++ b/tools/acpiexec/aetables.c
@@ -270,19 +270,37 @@ AeBuildLocalTables (
* as well as the checksum
*/
ExternalFadt->Dsdt = DsdtAddress;
- ExternalFadt->Facs = ACPI_PTR_TO_PHYSADDR (&LocalFACS);
+ if (!AcpiGbl_ReducedHardware)
+ {
+ ExternalFadt->Facs = ACPI_PTR_TO_PHYSADDR (&LocalFACS);
+ }
if (ExternalFadt->Header.Length > ACPI_PTR_DIFF (&ExternalFadt->XDsdt, ExternalFadt))
{
ExternalFadt->XDsdt = DsdtAddress;
- ExternalFadt->XFacs = ACPI_PTR_TO_PHYSADDR (&LocalFACS);
+
+ if (!AcpiGbl_ReducedHardware)
+ {
+ ExternalFadt->XFacs = ACPI_PTR_TO_PHYSADDR (&LocalFACS);
+ }
}
+
/* Complete the FADT with the checksum */
ExternalFadt->Header.Checksum = 0;
ExternalFadt->Header.Checksum = (UINT8) -AcpiTbChecksum (
(void *) ExternalFadt, ExternalFadt->Header.Length);
}
+ else if (AcpiGbl_UseHwReducedFadt)
+ {
+ ACPI_MEMCPY (&LocalFADT, HwReducedFadtCode, sizeof (ACPI_TABLE_FADT));
+ LocalFADT.Dsdt = DsdtAddress;
+ LocalFADT.XDsdt = DsdtAddress;
+
+ LocalFADT.Header.Checksum = 0;
+ LocalFADT.Header.Checksum = (UINT8) -AcpiTbChecksum (
+ (void *) &LocalFADT, LocalFADT.Header.Length);
+ }
else
{
/*