#include "AcpiPlatform.h"\r
#include <Library/HobLib.h>\r
#include <Guid/XenInfo.h>\r
+#include <Library/BaseLib.h>\r
\r
#define XEN_ACPI_PHYSICAL_ADDRESS 0x000EA020\r
#define XEN_BIOS_PHYSICAL_END 0x000FFFFF\r
\r
EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER *XenAcpiRsdpStructurePtr = NULL;\r
\r
-/**\r
- Calculates the checksum of the ACPI tables.\r
-\r
- @param Buffer Address of the ACPI table.\r
- @param Size Size of the ACPI table need to check.\r
-\r
-**/\r
-UINT8\r
-CalculateTableChecksum (\r
- IN VOID *Buffer,\r
- IN UINTN Size\r
- )\r
-{\r
- UINT8 Sum;\r
- UINT8 *Ptr;\r
-\r
- Sum = 0;\r
- //\r
- // Initialize pointer\r
- //\r
- Ptr = Buffer;\r
-\r
- //\r
- // Add all content of buffer\r
- //\r
- while ((Size--) != 0) {\r
- Sum = (UINT8) (Sum + (*Ptr++));\r
- }\r
-\r
- return Sum;\r
-}\r
-\r
/**\r
This function detects if OVMF is running on Xen.\r
\r
// RSDP ACPI 1.0 checksum for 1.0/2.0/3.0 table.\r
// This is only the first 20 bytes of the structure\r
//\r
- Sum = CalculateTableChecksum (\r
- RsdpStructurePtr,\r
+ Sum = CalculateSum8 (\r
+ (CONST UINT8 *)RsdpStructurePtr,\r
sizeof (EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_POINTER)\r
);\r
if (Sum != 0) {\r
//\r
// RSDP ACPI 2.0/3.0 checksum, this is the entire table\r
//\r
- Sum = CalculateTableChecksum (\r
- RsdpStructurePtr,\r
+ Sum = CalculateSum8 (\r
+ (CONST UINT8 *)RsdpStructurePtr,\r
sizeof (EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER)\r
);\r
if (Sum != 0) {\r
CurrentTableEntry = (VOID *) ((UINT8 *) Xsdt +\r
sizeof (EFI_ACPI_DESCRIPTION_HEADER) +\r
Index * sizeof (UINT64));\r
- CurrentTablePointer = *(UINT64 *)CurrentTableEntry;\r
+ CurrentTablePointer = (UINTN) *(UINT64 *)CurrentTableEntry;\r
CurrentTable = (EFI_ACPI_DESCRIPTION_HEADER *) CurrentTablePointer;\r
\r
//\r