1 #include <klibc/string.h>
3 #ifdef CONFIG_ARCH_X86_64
5 memcpy(void* dest, const void* src, unsigned long num)
10 asm volatile("movq %1, %%rdi\n"
11 "rep movsb\n" ::"S"(src),
19 memset(void* ptr, int value, unsigned long num)
21 asm volatile("movq %1, %%rdi\n"
22 "rep stosb\n" ::"c"(num),
30 strlen(const char* str)
33 asm volatile("movq %1, %%rdi\n"
40 : "rdi", "rcx", "memory");
46 strnlen(const char* str, unsigned long max_len)
49 asm volatile("movq %1, %%rdi\n"
54 : "r"(str), "r"(max_len), "a"(0)
55 : "rdi", "rcx", "memory");
57 return max_len - _c - 1;
62 memcpy(void* dest, const void* src, unsigned long num)
67 asm volatile("movl %1, %%edi\n"
68 "rep movsb\n" ::"S"(src),
76 memset(void* ptr, int value, unsigned long num)
78 asm volatile("movl %1, %%edi\n"
79 "rep stosb\n" ::"c"(num),