summaryrefslogtreecommitdiffstatshomepage
path: root/stm/string0.c
diff options
context:
space:
mode:
Diffstat (limited to 'stm/string0.c')
-rw-r--r--stm/string0.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/stm/string0.c b/stm/string0.c
index 6e2c252eaa..2a5f255971 100644
--- a/stm/string0.c
+++ b/stm/string0.c
@@ -11,6 +11,21 @@ void *memcpy(void *dest, const void *src, size_t n) {
return dest;
}
+void *memmove(void *dest, const void *src, size_t n) {
+ if (src < dest && dest < src + n) {
+ // need to copy backwards
+ uint8_t *d = dest + n - 1;
+ const uint8_t *s = src + n - 1;
+ for (; n > 0; n--) {
+ *d-- = *s--;
+ }
+ return dest;
+ } else {
+ // can use normal memcpy
+ return memcpy(dest, src, n);
+ }
+}
+
void *memset(void *s, int c, size_t n) {
uint8_t *s2 = s;
for (; n > 0; n--) {