diff options
| author | Michal Idziorek <m.i@gmx.at> | 2014-08-20 15:55:03 +0200 |
|---|---|---|
| committer | Michal Idziorek <m.i@gmx.at> | 2014-08-20 15:55:03 +0200 |
| commit | dc164927e71d760a41494ab1edf8e3deeda401db (patch) | |
| tree | 65253b4a5e443c599341d5972b58449388a4b2b1 /kernel/x86.c | |
| parent | 46063e75f3f81dfb532fa5772c88e9027a0faebd (diff) | |
started implementing floppy driver etc.
Diffstat (limited to 'kernel/x86.c')
| -rw-r--r-- | kernel/x86.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/kernel/x86.c b/kernel/x86.c new file mode 100644 index 0000000..ee38599 --- /dev/null +++ b/kernel/x86.c @@ -0,0 +1,38 @@ +#include "x86.h" + +void x86_outb(int port, uint8_t data) +{ + __asm __volatile("outb %0,%w1" : : "a" (data), "d" (port)); +} + +uint8_t x86_inb(int port) +{ + uint8_t data; + __asm __volatile("inb %w1,%0" : "=a" (data) : "d" (port)); + return data; +} + +void x86_outw(int port, uint16_t data) +{ + __asm __volatile("outw %0,%w1" : : "a" (data), "d" (port)); +} + +uint16_t x86_inw(int port) +{ + uint16_t data; + __asm __volatile("inw %w1,%0" : "=a" (data) : "d" (port)); + return data; +} + +void x86_outl(int port, uint32_t data) +{ + __asm __volatile("outl %0,%w1" : : "a" (data), "d" (port)); +} + +uint32_t x86_inl(int port) +{ + uint32_t data; + __asm __volatile("inl %w1,%0" : "=a" (data) : "d" (port)); + return data; +} + |
