@@ -651,6 +651,12 @@
# @Prompt Enable PEI StatusCode replay in DXE phase
gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeReplayIn|FALSE|BOOLEAN|0x0001002d
+ ## Indicates if ACPI will create an RSDT and XSDT table.<BR><BR> ##
+ The RSDT contains 32-bit points and hence has to lie in 0-4GB
+ memory.<BR> ## Setting this to TRUE will only generate an XSDT with
+ 64-bit pointers.<BR> # @Prompt Enable ACPI 64-bit pointers.
+
+ gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiNo32BitAddressSupport|FALSE|BOOL
+ EAN|0x0001002e
+
## Indicates if ACPI SDT protocol will be installed.<BR><BR>
# TRUE - Installs ACPI SDT protocol.<BR>
# FALSE - Does not install ACPI SDT protocol.<BR>
@@ -60,7 +60,8 @@
gEfiAcpiTableGuid ## PRODUCES ## SystemTable
[FeaturePcd]
- gEfiMdeModulePkgTokenSpaceGuid.PcdInstallAcpiSdtProtocol ## CONSUMES
+ gEfiMdeModulePkgTokenSpaceGuid.PcdInstallAcpiSdtProtocol ## CONSUMES
+ gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiNo32BitAddressSupport ## CONSUMES
[Pcd]
gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultOemId ## CONSUMES
@@ -167,7 +167,8 @@ PublishTables (
// Add the RSD_PTR to the system table and store that we have installed the
// tables.
//
- if ((Version & EFI_ACPI_TABLE_VERSION_1_0B) != 0) {
+ if (!FeaturePcdGet (PcdAcpiNo32BitAddressSupport) &&
+ (Version & EFI_ACPI_TABLE_VERSION_1_0B) != 0) {
Status = gBS->InstallConfigurationTable (&gEfiAcpi10TableGuid, AcpiTableInstance->Rsdp1);
if (EFI_ERROR (Status)) {
return EFI_ABORTED;
@@ -393,7 +394,8 @@ ReallocateAcpiTableBuffer (
//
// Update RSDP to point to the new Rsdt and Xsdt address.
//
- if ((PcdGet32 (PcdAcpiExposedTableVersions) & EFI_ACPI_TABLE_VERSION_1_0B) != 0) {
+ if (!FeaturePcdGet (PcdAcpiNo32BitAddressSupport) &&
+ (PcdGet32 (PcdAcpiExposedTableVersions) &
+ EFI_ACPI_TABLE_VERSION_1_0B) != 0) {
AcpiTableInstance->Rsdp1->RsdtAddress = (UINT32) (UINTN) AcpiTableInstance->Rsdt1;
AcpiTableInstance->Rsdp3->RsdtAddress = (UINT32) (UINTN) AcpiTableInstance->Rsdt3;
}
@@ -518,7 +520,7 @@ AddTableToList (
//
ASSERT ((EFI_PAGE_SIZE % 64) == 0);
Status = gBS->AllocatePages (
- AllocateMaxAddress,
+ mAcpiTableAllocType,
EfiACPIMemoryNVS,
CurrentTableList->NumberOfPages,
&CurrentTableList->PageAddress @@ -593,8 +595,10 @@ AddTableToList (