/* If Length is not aligned on a 64-bit boundary, then ASSERT(). If Buffer is not aligned on a 64-bit boundary, then ASSERT(). */
UINT64* EFIAPI S3MmioReadBuffer64(IN UINTN StartAddress, IN UINTN Length, OUT UINT64 *Buffer)
/* If Length is not aligned on a 64-bit boundary, then ASSERT(). If Buffer is not aligned on a 64-bit boundary, then ASSERT(). */
UINT64* EFIAPI S3MmioReadBuffer64(IN UINTN StartAddress, IN UINTN Length, OUT UINT64 *Buffer)
{
  UINT64         *ReturnBuffer;
  RETURN_STATUS  Status;
  ReturnBuffer = MmioReadBuffer64 (StartAddress, Length, Buffer);
  Status = S3BootScriptSaveMemWrite (
             S3BootScriptWidthUint64,
             StartAddress,
             Length / sizeof (UINT64),
             ReturnBuffer
             );
  ASSERT (Status == RETURN_SUCCESS);
  return ReturnBuffer;
}