| // SPDX-License-Identifier: GPL-2.0 |
| /* |
| * arch/mips/boot/compressed/string.c |
| * |
| * Very small subset of simple string routines |
| */ |
| |
| #include <linux/compiler_attributes.h> |
| #include <linux/types.h> |
| |
| void *memcpy(void *dest, const void *src, size_t n) |
| { |
| int i; |
| const char *s = src; |
| char *d = dest; |
| |
| for (i = 0; i < n; i++) |
| d[i] = s[i]; |
| return dest; |
| } |
| |
| void *memset(void *s, int c, size_t n) |
| { |
| int i; |
| char *ss = s; |
| |
| for (i = 0; i < n; i++) |
| ss[i] = c; |
| return s; |
| } |
| |
| void * __weak memmove(void *dest, const void *src, size_t n) |
| { |
| unsigned int i; |
| const char *s = src; |
| char *d = dest; |
| |
| if ((uintptr_t)dest < (uintptr_t)src) { |
| for (i = 0; i < n; i++) |
| d[i] = s[i]; |
| } else { |
| for (i = n; i > 0; i--) |
| d[i - 1] = s[i - 1]; |
| } |
| return dest; |
| } |