diff options
Diffstat (limited to 'dos/getsetsl.c')
-rw-r--r-- | dos/getsetsl.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/dos/getsetsl.c b/dos/getsetsl.c index fadef438..5260a2a1 100644 --- a/dos/getsetsl.c +++ b/dos/getsetsl.c @@ -123,3 +123,20 @@ void memcpy_from_sl(void *dst, const void *src, size_t len) : "r" (seg) : "memory"); } + +void memset_sl(void *dst, int c, size_t len) +{ + uint16_t seg; + uint16_t off; + + seg = ds() + ((size_t)dst >> 4); + off = (size_t)dst & 15; + + asm volatile("pushw %%es ; " + "movw %3,%%es ; " + "rep ; stosb ; " + "popw %%es" + : "+D" (off), "+c" (len) + : "a" (c), "r" (seg) + : "memory"); +} |