22 lines
603 B
C
22 lines
603 B
C
#pragma once
|
|
|
|
static unsigned char port_byte_in(unsigned short port) {
|
|
unsigned char result;
|
|
__asm__("in %%dx, %%al" : "=a" (result) : "d" (port));
|
|
return result;
|
|
}
|
|
|
|
static unsigned short port_word_in(unsigned short port) {
|
|
unsigned short result;
|
|
__asm__("in %%dx, %%ax" : "=a" (result) : "d" (port));
|
|
return result;
|
|
}
|
|
|
|
static void port_byte_out(unsigned short port, unsigned char data) {
|
|
__asm__("out %%al, %%dx" : : "a" (data), "d" (port));
|
|
}
|
|
|
|
static void port_long_out(unsigned short port, unsigned int data) {
|
|
__asm__("out %%eax, %%dx" : : "a" (data), "d" (port));
|
|
}
|