//\r
Table = 0;\r
CopyMem (&Table, (VOID *) (EntryBase + Index * TablePointerSize), TablePointerSize);\r
+\r
+ if (Table == NULL) {\r
+ continue;\r
+ }\r
+\r
if (Table->Signature == Signature) {\r
return Table;\r
}\r
{\r
EFI_STATUS Status;\r
EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER *Rsdp;\r
- EFI_ACPI_DESCRIPTION_HEADER *Rsdt;\r
- EFI_ACPI_DESCRIPTION_HEADER *Xsdt;\r
EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE *Fadt;\r
\r
Status = EfiGetSystemConfigurationTable (&gEfiAcpiTableGuid, (VOID **) &Rsdp);\r
Status = EfiGetSystemConfigurationTable (&gEfiAcpi10TableGuid, (VOID **) &Rsdp);\r
}\r
\r
- if (EFI_ERROR (Status)) {\r
+ if (EFI_ERROR (Status) || (Rsdp == NULL)) {\r
return 0;\r
}\r
\r
- ASSERT (Rsdp != NULL);\r
+ Fadt = NULL;\r
\r
//\r
// Find FADT in XSDT\r
//\r
- Fadt = NULL;\r
- if (Rsdp->Revision >= EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION) {\r
- Xsdt = (EFI_ACPI_DESCRIPTION_HEADER *) (UINTN) Rsdp->XsdtAddress;\r
- Fadt = ScanTableInSDT (Xsdt, EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE, sizeof (UINTN));\r
+ if (Rsdp->Revision >= EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION && Rsdp->XsdtAddress != 0) {\r
+ Fadt = ScanTableInSDT (\r
+ (EFI_ACPI_DESCRIPTION_HEADER *) (UINTN) Rsdp->XsdtAddress,\r
+ EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE,\r
+ sizeof (UINTN)\r
+ );\r
}\r
\r
- if (Fadt == NULL) {\r
- //\r
- // Find FADT in RSDT\r
- //\r
- Rsdt = (EFI_ACPI_DESCRIPTION_HEADER *) (UINTN) Rsdp->RsdtAddress;\r
- Fadt = ScanTableInSDT (Rsdt, EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE, sizeof (UINT32));\r
+ //\r
+ // Find FADT in RSDT\r
+ //\r
+ if (Fadt == NULL && Rsdp->RsdtAddress != 0) {\r
+ Fadt = ScanTableInSDT (\r
+ (EFI_ACPI_DESCRIPTION_HEADER *) (UINTN) Rsdp->RsdtAddress,\r
+ EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE,\r
+ sizeof (UINT32)\r
+ );\r
}\r
\r
if ((Fadt != NULL) &&\r