diff options
-rw-r--r-- | kernel/include/comus/asm.h | 3 |
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) |