diff options
author | Freya Murphy <freya@freyacat.org> | 2025-04-27 15:39:01 -0400 |
---|---|---|
committer | Freya Murphy <freya@freyacat.org> | 2025-04-27 15:39:01 -0400 |
commit | 8dde461b65798cc1552a860dcec148a7c261f461 (patch) | |
tree | f4c1c6361cf8a6234a84923a6e43b1e2243f3294 | |
parent | fs return bytes read (diff) | |
download | comus-8dde461b65798cc1552a860dcec148a7c261f461.tar.gz comus-8dde461b65798cc1552a860dcec148a7c261f461.tar.bz2 comus-8dde461b65798cc1552a860dcec148a7c261f461.zip |
better rep insw
-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) |