diff --git a/Kernel/IO.cpp b/Kernel/IO.cpp deleted file mode 100644 index baeaa1bfec..0000000000 --- a/Kernel/IO.cpp +++ /dev/null @@ -1,41 +0,0 @@ -#include "IO.h" - -namespace IO { - -BYTE in8(WORD port) -{ - BYTE value; - asm("inb %%dx, %%al":"=a"(value):"d"(port)); - return value; -} - -WORD in16(WORD port) -{ - WORD value; - asm("inw %%dx, %%ax":"=a"(value):"d"(port)); - return value; -} - -DWORD in32(DWORD port) -{ - DWORD value; - asm("inl %%dx, %%eax":"=a"(value):"d"(port)); - return value; -} - -void out8(WORD port, BYTE value) -{ - asm("outb %%al, %%dx"::"d"(port), "a"(value)); -} - -void out16(WORD port, WORD value) -{ - asm("outw %%ax, %%dx"::"d"(port), "a"(value)); -} - -void out32(WORD port, WORD value) -{ - asm("outl %%eax, %%dx"::"d"(port), "a"(value)); -} - -} diff --git a/Kernel/IO.h b/Kernel/IO.h index 94e4ebe287..2cdd9af6ec 100644 --- a/Kernel/IO.h +++ b/Kernel/IO.h @@ -4,12 +4,39 @@ namespace IO { -BYTE in8(WORD port); -WORD in16(WORD port); -DWORD in32(WORD port); - -void out8(WORD port, BYTE data); -void out16(WORD port, WORD data); -void out32(WORD port, DWORD data); - +inline byte in8(word port) +{ + byte value; + asm volatile("inb %1, %0":"=a"(value):"Nd"(port)); + return value; +} + +inline word in16(word port) +{ + word value; + asm volatile("inw %1, %0":"=a"(value):"Nd"(port)); + return value; +} + +inline dword in32(dword port) +{ + dword value; + asm volatile("inl %1, %0":"=a"(value):"Nd"(port)); + return value; +} + +inline void out8(word port, byte value) +{ + asm volatile("outb %0, %1"::"a"(value), "Nd"(port)); +} + +inline void out16(word port, word value) +{ + asm volatile("outw %0, %1"::"a"(value), "Nd"(port)); +} + +inline void out32(word port, dword value) +{ + asm volatile("outl %0, %1"::"a"(value), "Nd"(port)); +} } diff --git a/Kernel/Makefile b/Kernel/Makefile index 208d4c18ab..93944dbb3d 100644 --- a/Kernel/Makefile +++ b/Kernel/Makefile @@ -9,7 +9,6 @@ KERNEL_OBJS = \ i8253.o \ Keyboard.o \ CMOS.o \ - IO.o \ PIC.o \ Syscall.o \ Disk.o \