hazel/kernel/io.c

50 lines
955 B
C
Raw Normal View History

2024-06-27 18:36:32 -04:00
#include <kernel/io.h>
uint8_t inb(uint16_t port) {
uint8_t result;
asm volatile ("in %%dx, %%al"
: "=a" (result)
: "d" (port));
return result;
}
void outb(uint16_t port, uint8_t byte) {
asm volatile ("out %%al, %%dx"
: // no output
: "a" (byte), "d" (port));
}
2024-08-01 14:22:25 -04:00
uint16_t inw(uint16_t port) {
uint16_t result;
asm volatile ("in %%dx, %%ax"
: "=a" (result)
: "d" (port));
return result;
}
void outw(uint16_t port, uint16_t byte) {
asm volatile ("out %%ax, %%dx"
: // no output
: "a" (byte), "d" (port));
}
uint32_t inl(uint16_t port) {
uint32_t result;
asm volatile ("in %%dx, %%eax"
: "=a" (result)
: "d" (port));
return result;
}
void outl(uint16_t port, uint32_t byte) {
asm volatile ("out %%eax, %%dx"
: // no output
: "a" (byte), "d" (port));
}