Files
OwOS/kernel/kernio.h
2019-05-02 17:29:24 +01:00

46 lines
915 B
C

#pragma once
#include <lib/stdint.h>
inline void outb(uint16_t port, uint8_t b) {
asm("outb %0, %1" : : "a"(b), "Nd"(port));
}
inline uint8_t inb(uint16_t port) {
uint8_t ret;
asm ( "inb %1, %0"
: "=a"(ret) // Output
: "Nd"(port)); // Input
return ret;
}
static inline uint16_t inw(uint16_t port) {
uint16_t ret;
asm ( "inw %1, %0"
: "=a"(ret)
: "Nd"(port) );
return ret;
}
static inline void outw(uint16_t port, uint16_t val) {
asm ( "outw %0, %1" : : "a"(val), "Nd"(port) );
}
static inline uint32_t inl(uint16_t port) {
uint32_t ret;
asm ( "inl %1, %0"
: "=a"(ret)
: "Nd"(port) );
return ret;
}
static inline void outl(uint16_t port, uint32_t val) {
asm ( "outl %0, %1" : : "a"(val), "Nd"(port) );
}
static inline void io_wait() {
asm ( "jmp 1f\n\t"
"1:jmp 2f\n\t"
"2:" );
}