Functions to read/write bytes (b), word (w) and longs (l) to I/O ports:
unsigned in[bwl](unsigned long *addr);
void out[bwl](unsigned port, unsigned long *addr);
And the strings variants: often more efficient than the corresponding C loop, if the processor supports such operations!
void ins[bwl](unsigned port, void *addr,
unsigned long count);
void outs[bwl](unsigned port, void *addr,
unsigned long count);