/* For Td guest TDVMCALL_IO is invoked to read I/O port. */
UINT32 EFIAPI IoRead32(IN UINTN Port)
/* For Td guest TDVMCALL_IO is invoked to read I/O port. */
UINT32 EFIAPI IoRead32(IN UINTN Port)
{
  UINT32   Data;
  BOOLEAN  Flag;
  ASSERT ((Port & 3) == 0);
  Flag = FilterBeforeIoRead (FilterWidth32, Port, &Data);
  if (Flag) {
    if (IsTdxGuest ()) {
      Data = TdIoRead32 (Port);
    } else {
      __asm__ __volatile__ ("inl %w1,%0" : "=a" (Data) : "d" ((UINT16)Port));
    }
  }
  FilterAfterIoRead (FilterWidth32, Port, &Data);
  return Data;
}