summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kernel/include/comus/asm.h3
1 files changed, 1 insertions, 2 deletions
diff --git a/kernel/include/comus/asm.h b/kernel/include/comus/asm.h
index c7597e7..a6a8a45 100644
--- a/kernel/include/comus/asm.h
+++ b/kernel/include/comus/asm.h
@@ -36,8 +36,7 @@ static inline uint16_t inw(uint16_t port)
static inline void rep_inw(uint16_t port, uint16_t *buffer, size_t count)
{
- while (count--)
- *(buffer++) = inw(port);
+ __asm__ volatile("rep insw" : "+D"(buffer), "+c"(count) : "d"(port) : "memory");
}
static inline void outw(uint16_t port, uint16_t val)