/* If Length is not aligned on a 32-bit boundary, then ASSERT(). If Buffer is not aligned on a 32-bit boundary, then ASSERT(). */
UINT32* EFIAPI S3MmioReadBuffer32(IN UINTN StartAddress, IN UINTN Length, OUT UINT32 *Buffer)
/* If Length is not aligned on a 32-bit boundary, then ASSERT(). If Buffer is not aligned on a 32-bit boundary, then ASSERT(). */
UINT32* EFIAPI S3MmioReadBuffer32(IN UINTN StartAddress, IN UINTN Length, OUT UINT32 *Buffer)
{
  UINT32         *ReturnBuffer;
  RETURN_STATUS  Status;
  ReturnBuffer = MmioReadBuffer32 (StartAddress, Length, Buffer);
  Status = S3BootScriptSaveMemWrite (
             S3BootScriptWidthUint32,
             StartAddress,
             Length / sizeof (UINT32),
             ReturnBuffer
             );
  ASSERT (Status == RETURN_SUCCESS);
  return ReturnBuffer;
}