/* This function also performs a RAW dump of the ACPI table and validates the checksum. */
VOID EFIAPI ParseAcpiRsdp(IN BOOLEAN Trace, IN UINT8 *Ptr, IN UINT32 AcpiTableLength, IN UINT8 AcpiTableRevision)
/* This function also performs a RAW dump of the ACPI table and validates the checksum. */
VOID EFIAPI ParseAcpiRsdp(IN BOOLEAN Trace, IN UINT8 *Ptr, IN UINT32 AcpiTableLength, IN UINT8 AcpiTableRevision)
{
  if (Trace) {
    DumpRaw (Ptr, AcpiTableLength);
    VerifyChecksum (TRUE, Ptr, AcpiTableLength);
  }
  ParseAcpi (
    Trace,
    0,
    "RSDP",
    Ptr,
    AcpiTableLength,
    PARSER_PARAMS (RsdpParser)
    );
  if (XsdtAddress == NULL) {
    IncrementErrorCount ();
    Print (
      L"ERROR: Insufficient table length. AcpiTableLength = %d." \
      L"RSDP parsing aborted.\n",
      AcpiTableLength
      );
    return;
  }
  if ((*XsdtAddress) == 0) {
    IncrementErrorCount ();
    Print (L"ERROR: XSDT Pointer is not set. RSDP parsing aborted.\n");
    return;
  }
  ProcessAcpiTable ((UINT8 *)(UINTN)(*XsdtAddress));
}