#include <stdint.h>
// PCI configuration mechanism #1. The C# bridge excludes IRQ preemption around
// the address/data pair; these are real guest IN/OUT instructions, not host I/O.
uint32_t xfe_network_port_read32(uint16_t port)
{
uint32_t value;
__asm__ volatile("inl %1, %0" : "=a"(value) : "Nd"(port) : "memory");
return value;
}
void xfe_network_port_write32(uint16_t port, uint32_t value)
{
__asm__ volatile("outl %0, %1" : : "a"(value), "Nd"(port) : "memory");
}
#include <stdint.h>
// PCI configuration mechanism #1. The C# bridge excludes IRQ preemption around
// the address/data pair; these are real guest IN/OUT instructions, not host I/O.
uint32_t xfe_network_port_read32(uint16_t port)
{
uint32_t value;
__asm__ volatile("inl %1, %0" : "=a"(value) : "Nd"(port) : "memory");
return value;
}
void xfe_network_port_write32(uint16_t port, uint32_t value)
{
__asm__ volatile("outl %0, %1" : : "a"(value), "Nd"(port) : "memory");
}