mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-10-27 12:48:22 +00:00
kernel: io.h
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
#ifndef IO_H
|
||||
#define IO_H
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
static inline void outd(uint16_t port, uint32_t data) {
|
||||
asm volatile("out %%eax, %%dx" : : "a"(data), "d"(port));
|
||||
}
|
||||
|
||||
static inline uint32_t ind(uint16_t port) {
|
||||
uint32_t ret;
|
||||
asm volatile("in %%dx, %%eax" : "=a"(ret) : "d"(port));
|
||||
return ret;
|
||||
}
|
||||
|
||||
static inline void outb(uint16_t port, uint8_t data) {
|
||||
asm volatile("out %%al, %%dx" : : "a"(data), "d"(port));
|
||||
}
|
||||
|
||||
static inline uint8_t inb(uint16_t port) {
|
||||
uint8_t ret;
|
||||
asm volatile ("in %%dx, %%al" : "=a"(ret) : "d"(port));
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user