/* This function must guarantee that all I/O read and write operations are serialized. If such operations are not supported, then ASSERT(). */
VOID EFIAPI IoReadFifoWorker(IN UINTN Port, IN EFI_PEI_CPU_IO_PPI_WIDTH Width, IN UINTN Count, IN VOID *Buffer)
/* This function must guarantee that all I/O read and write operations are serialized. If such operations are not supported, then ASSERT(). */
VOID EFIAPI IoReadFifoWorker(IN UINTN Port, IN EFI_PEI_CPU_IO_PPI_WIDTH Width, IN UINTN Count, IN VOID *Buffer)
{
  CONST EFI_PEI_SERVICES  **PeiServices;
  EFI_PEI_CPU_IO_PPI      *CpuIo;
  EFI_STATUS              Status;
  PeiServices = GetPeiServicesTablePointer ();
  CpuIo       = (*PeiServices)->CpuIo;
  ASSERT (CpuIo != NULL);
  Status = CpuIo->Io.Read (PeiServices, CpuIo, Width, Port, Count, Buffer);
  ASSERT_EFI_ERROR (Status);
}