+ //\r
+ // Comment block "the caller installs the tables in "FADT, DSDT" order"\r
+ // The below comments are also in "the caller installs the tables in "DSDT, FADT" order" comment block.\r
+ //\r
+ // The ACPI specification, up to and including revision 5.1 Errata A,\r
+ // allows the DSDT and X_DSDT fields to be both set in the FADT.\r
+ // (Obviously, this only makes sense if the DSDT address is representable in 4 bytes.)\r
+ // Starting with 5.1 Errata B, specifically for Mantis 1393 <https://mantis.uefi.org/mantis/view.php?id=1393>,\r
+ // the spec requires at most one of DSDT and X_DSDT fields to be set to a nonzero value,\r
+ // but strangely an exception is 6.0 that has no this requirement.\r
+ //\r
+ // Here we do not make the DSDT and X_DSDT fields mutual exclusion conditionally\r
+ // by checking FADT revision, but always set both DSDT and X_DSDT fields in the FADT\r
+ // to have better compatibility as some OS may have assumption to only consume X_DSDT\r
+ // field even the DSDT address is < 4G.\r
+ //\r
+ Buffer64 = AcpiTableInstance->Fadt3->Dsdt;\r
+ } else {\r
+ AcpiTableInstance->Fadt3->Dsdt = 0;\r
+ Buffer64 = (UINT64) (UINTN) AcpiTableInstance->Dsdt3;\r