aboutsummaryrefslogtreecommitdiff
path: root/strings.c
diff options
context:
space:
mode:
Diffstat (limited to 'strings.c')
-rw-r--r--strings.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/strings.c b/strings.c
index 4164467..94cb6ac 100644
--- a/strings.c
+++ b/strings.c
@@ -1,5 +1,3 @@
-#include <stddef.h>
-
#include "strings.h"
void uint32_to_dec(uint32_t number, char buf[10])
@@ -79,3 +77,17 @@ size_t strlen(char string[])
return len;
}
+
+void memcpy(void *dst, void *src, size_t nbytes)
+{
+ size_t iter;
+
+ // copying by word is faster than by byte
+ // copy by word as much as possible
+ for (iter = 0; iter < nbytes / 4; iter++)
+ ((volatile uint32_t*) dst)[iter] = ((uint32_t*) src)[iter];
+
+ // copy the remaining 1, 2 or 3 bytes by byte
+ for (iter *= 4; iter < nbytes; iter++)
+ ((volatile uint8_t*) dst)[iter] = ((uint8_t*) src)[iter];
+}