From 39f7d128cb5c6cea2cd517ec1ba29be89cf1f42b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergiusz=20=27q3k=27=20Baza=C5=84ski?= Date: Sun, 28 Oct 2012 10:27:36 +0100 Subject: [PATCH] 32-bit operations on I/O ports. --- Kernel/include/Tier0/kstdio.h | 2 ++ Kernel/src/Tier0/kstdio.c | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/Kernel/include/Tier0/kstdio.h b/Kernel/include/Tier0/kstdio.h index 4da65ef..450a242 100644 --- a/Kernel/include/Tier0/kstdio.h +++ b/Kernel/include/Tier0/kstdio.h @@ -8,6 +8,8 @@ void kstdio_init(void); void koutb(u16 Port, u8 Data); u8 kinb(u16 Port); +void koutl(u16 Port, u32 Data); +u32 kinl(u16 Port); void kio_wait(void); u32 kstrlen(const s8 *szString); void kmove_cursor(u8 X, u8 Y); diff --git a/Kernel/src/Tier0/kstdio.c b/Kernel/src/Tier0/kstdio.c index a63f3a3..42a27e9 100644 --- a/Kernel/src/Tier0/kstdio.c +++ b/Kernel/src/Tier0/kstdio.c @@ -41,6 +41,18 @@ u8 kinb(u16 Port) return Return; } +void koutl(u16 Port, u32 Data) +{ + __asm__ volatile("outl %1, %0" :: "dN" (Port), "a" (Data)); +} + +u32 kinl(u16 Port) +{ + u32 Return; + __asm__ volatile("inl %1, %0" :"=a"(Return):"Nd"(Port)); + return Return; +} + void kio_wait(void) { __asm__ volatile("jmp 1f;1:jmp 1f;1:");