1 // SPDX-License-Identifier: GPL-2.0 2 /* 3 * arch/mips/boot/compressed/string.c 4 * 5 * Very small subset of simple string routines 6 */ 7 8 #include <linux/compiler_attributes.h> 9 #include <linux/types.h> 10 #include <asm/string.h> 11 12 void *memcpy(void *dest, const void *src, size_t n) 13 { 14 int i; 15 const char *s = src; 16 char *d = dest; 17 18 for (i = 0; i < n; i++) 19 d[i] = s[i]; 20 return dest; 21 } 22 23 void *memset(void *s, int c, size_t n) 24 { 25 int i; 26 char *ss = s; 27 28 for (i = 0; i < n; i++) 29 ss[i] = c; 30 return s; 31 } 32 33 void * __weak memmove(void *dest, const void *src, size_t n) 34 { 35 unsigned int i; 36 const char *s = src; 37 char *d = dest; 38 39 if ((uintptr_t)dest < (uintptr_t)src) { 40 for (i = 0; i < n; i++) 41 d[i] = s[i]; 42 } else { 43 for (i = n; i > 0; i--) 44 d[i - 1] = s[i - 1]; 45 } 46 return dest; 47 } 48