X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/6c506d8916fb114675e93d0e2cb20831d4022294..d1b1c8d9119229dbeed06cd252917e54a1cb77f6:/lunaix-os/arch/i386/klib/fast_str.c?ds=sidebyside diff --git a/lunaix-os/arch/i386/klib/fast_str.c b/lunaix-os/arch/i386/klib/fast_str.c new file mode 100644 index 0000000..46dcf28 --- /dev/null +++ b/lunaix-os/arch/i386/klib/fast_str.c @@ -0,0 +1,26 @@ +#include + +void* +memcpy(void* dest, const void* src, unsigned long num) +{ + if (!num) + return dest; + + asm volatile("movl %1, %%edi\n" + "rep movsb\n" ::"S"(src), + "r"(dest), + "c"(num) + : "edi", "memory"); + return dest; +} + +void* +memset(void* ptr, int value, unsigned long num) +{ + asm volatile("movl %1, %%edi\n" + "rep stosb\n" ::"c"(num), + "r"(ptr), + "a"(value) + : "edi", "memory"); + return ptr; +} \ No newline at end of file