summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFreya Murphy <freya@freyacat.org>2025-04-27 15:39:01 -0400
committerFreya Murphy <freya@freyacat.org>2025-04-27 15:39:01 -0400
commit8dde461b65798cc1552a860dcec148a7c261f461 (patch)
treef4c1c6361cf8a6234a84923a6e43b1e2243f3294
parentfs return bytes read (diff)
downloadcomus-8dde461b65798cc1552a860dcec148a7c261f461.tar.gz
comus-8dde461b65798cc1552a860dcec148a7c261f461.tar.bz2
comus-8dde461b65798cc1552a860dcec148a7c261f461.zip
better rep insw
-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)