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 | |