From dc164927e71d760a41494ab1edf8e3deeda401db Mon Sep 17 00:00:00 2001 From: Michal Idziorek Date: Wed, 20 Aug 2014 15:55:03 +0200 Subject: started implementing floppy driver etc. --- kernel/x86.h | 43 ++++++++----------------------------------- 1 file changed, 8 insertions(+), 35 deletions(-) (limited to 'kernel/x86.h') diff --git a/kernel/x86.h b/kernel/x86.h index 1f2179d..425ab38 100644 --- a/kernel/x86.h +++ b/kernel/x86.h @@ -3,40 +3,13 @@ #include "kernel.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; -} +#define X86_IRQ_BEGIN asm("cli\npusha"); +#define X86_IRQ_END asm("mov $0x20, %al\nout %al, $0x20\npopa\nsti\nleave\niret"); +void x86_outb(int port, uint8_t data); +uint8_t x86_inb(int port); +void x86_outw(int port, uint16_t data); +uint16_t x86_inw(int port); +void x86_outl(int port, uint32_t data); +uint32_t x86_inl(int port); #endif -- cgit v1.2.3