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
rewrite the device subsystem interfaces (#48)
[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
old mode 100755
(executable)
new mode 100644
(file)
index
aeaca00
..
3e0ba08
--- a/
lunaix-os/libs/klibc/string/mem.c
+++ b/
lunaix-os/libs/klibc/string/mem.c
@@
-1,51
+1,49
@@
#include <klibc/string.h>
#include <klibc/string.h>
-#include <
stdint
.h>
+#include <
lunaix/types
.h>
-void*
-memcpy(void* dest, const void* src,
size_t
num)
+void*
_weak
+memcpy(void* dest, const void* src,
unsigned long
num)
{
{
- 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*
-memmove(void* dest, const void* src,
size_t
num)
+void*
_weak
+memmove(void* dest, const void* src,
unsigned long
num)
{
{
- u
int8_t* dest_ptr = (uint
8_t*)dest;
- const u
int8_t* src_ptr = (const uint
8_t*)src;
+ u
8_t* dest_ptr = (u
8_t*)dest;
+ const u
8_t* src_ptr = (const u
8_t*)src;
if (dest_ptr < src_ptr) {
if (dest_ptr < src_ptr) {
- for (
size_t
i = 0; i < num; i++) {
+ for (
unsigned long
i = 0; i < num; i++) {
*(dest_ptr + i) = *(src_ptr + i);
}
} else {
*(dest_ptr + i) = *(src_ptr + i);
}
} else {
- for (
size_t
i = num; i != 0; i--) {
+ for (
unsigned long
i = num; i != 0; i--) {
*(dest_ptr + i - 1) = *(src_ptr + i - 1);
}
}
return dest;
}
*(dest_ptr + i - 1) = *(src_ptr + i - 1);
}
}
return dest;
}
-void*
-memset(void* ptr, int value,
size_t
num)
+void*
_weak
+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
-memcmp(const void* ptr1, const void* ptr2,
size_t
num)
+int
_weak
+memcmp(const void* ptr1, const void* ptr2,
unsigned long
num)
{
{
- u
int8_t* p1 = (uint
8_t*)ptr1;
- u
int8_t* p2 = (uint
8_t*)ptr2;
- for (
size_t
i = 0; i < num; i++) {
+ u
8_t* p1 = (u
8_t*)ptr1;
+ u
8_t* p2 = (u
8_t*)ptr2;
+ for (
unsigned long
i = 0; i < num; i++) {
int diff = *(p1 + i) - *(p2 + i);
if (diff != 0) {
return diff;
int diff = *(p1 + i) - *(p2 + i);
if (diff != 0) {
return diff;