use core::arch::asm;
#[cfg(feature = "trace_guest")]
use hyperlight_common::outb::OutBAction;
pub(crate) unsafe fn out32(port: u16, val: u32) {
#[cfg(feature = "trace_guest")]
{
if let Some((ptr, len)) = hyperlight_guest_tracing::serialized_data() {
unsafe {
asm!("out dx, eax",
in("dx") port,
in("eax") val,
in("r8") OutBAction::TraceBatch as u64,
in("r9") ptr,
in("r10") len,
options(preserves_flags, nomem, nostack)
)
};
hyperlight_guest_tracing::reset();
} else {
unsafe {
asm!("out dx, eax", in("dx") port, in("eax") val, options(preserves_flags, nomem, nostack))
};
}
}
#[cfg(not(feature = "trace_guest"))]
unsafe {
asm!("out dx, eax", in("dx") port, in("eax") val, options(preserves_flags, nomem, nostack));
}
}