git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Decoupling Architectural-specific Code (#35)
[lunaix-os.git]
/
lunaix-os
/
libs
/
klibc
/
string
/
mem.c
diff --git
a/lunaix-os/libs/klibc/string/mem.c
b/lunaix-os/libs/klibc/string/mem.c
index 08563581f19119172b960067de30094d0ff69a1a..b347b36ee340515248277faa12e5882bc0e970a5 100755
(executable)
--- a/
lunaix-os/libs/klibc/string/mem.c
+++ b/
lunaix-os/libs/klibc/string/mem.c
@@
-1,20
+1,17
@@
#include <klibc/string.h>
#include <lunaix/types.h>
#include <klibc/string.h>
#include <lunaix/types.h>
-void*
+void*
weak
memcpy(void* dest, const void* src, unsigned long num)
{
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");
+ for (size_t i = 0; i < num; i++) {
+ ((u8_t*)dest)[i] = ((u8_t*)src)[i];
+ }
+
return dest;
}
return dest;
}
-void*
+void*
weak
memmove(void* dest, const void* src, unsigned long num)
{
u8_t* dest_ptr = (u8_t*)dest;
memmove(void* dest, const void* src, unsigned long num)
{
u8_t* dest_ptr = (u8_t*)dest;
@@
-31,18
+28,17
@@
memmove(void* dest, const void* src, unsigned long num)
return dest;
}
return dest;
}
-void*
+void*
weak
memset(void* ptr, int value, unsigned long num)
{
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");
+ for (size_t i = 0; i < num; i++) {
+ ((u8_t*)ptr)[i] = 0;
+ }
+
return ptr;
}
return ptr;
}
-int
+int
weak
memcmp(const void* ptr1, const void* ptr2, unsigned long num)
{
u8_t* p1 = (u8_t*)ptr1;
memcmp(const void* ptr1, const void* ptr2, unsigned long num)
{
u8_t* p1 = (u8_t*)ptr1;