From fa6029eed07164efc62fbc3de822084e1ffdad0f Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 12 Jan 2019 02:19:02 +0100 Subject: [PATCH] Make the kernel's memset do a "rep stosb" because. --- Kernel/StdLib.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/Kernel/StdLib.cpp b/Kernel/StdLib.cpp index 4af6586743..279f00214b 100644 --- a/Kernel/StdLib.cpp +++ b/Kernel/StdLib.cpp @@ -18,12 +18,17 @@ void strcpy(char* dest, const char *src) while ((*dest++ = *src++) != '\0'); } -void* memset(void* dest, byte c, dword n) +void* memset(void* dest_ptr, byte c, dword n) { - byte *bdest = (byte *)dest; - for (; n; --n) - *(bdest++) = c; - return dest; + dword dest = (dword)dest_ptr; + asm volatile( + "cld\n" + "rep stosb\n" + : "=D" (dest), "=c" (n) + : "0" (dest), "1" (n), "a" (c) + : "cc", "memory" + ); + return dest_ptr; } char* strrchr(const char* str, int ch)