]>
Commit | Line | Data |
---|---|---|
11ceb258 LE |
1 | //------------------------------------------------------------------------------\r |
2 | //\r | |
3 | // Copyright (c) 2016, Linaro Ltd. All rights reserved.<BR>\r | |
4 | //\r | |
5 | // SPDX-License-Identifier: BSD-2-Clause-Patent\r | |
6 | //\r | |
7 | //------------------------------------------------------------------------------\r | |
8 | \r | |
9 | typedef __SIZE_TYPE__ size_t;\r | |
10 | \r | |
11 | static __attribute__((__used__))\r | |
12 | void *__memset(void *s, int c, size_t n)\r | |
13 | {\r | |
14 | unsigned char *d = s;\r | |
15 | \r | |
16 | while (n--)\r | |
17 | *d++ = c;\r | |
18 | \r | |
19 | return s;\r | |
20 | }\r | |
21 | \r | |
22 | //\r | |
23 | // Other modules (such as CryptoPkg/IntrinsicLib) may provide another\r | |
24 | // implementation of memset(), which may conflict with this one if this\r | |
25 | // object was pulled into the link due to the definitions below. So make\r | |
26 | // our memset() 'weak' to let the other implementation take precedence.\r | |
27 | //\r | |
28 | __attribute__((__weak__, __alias__("__memset")))\r | |
29 | void *memset(void *dest, int c, size_t n);\r | |
30 | \r | |
31 | #ifdef __arm__\r | |
32 | \r | |
33 | void __aeabi_memset(void *dest, size_t n, int c)\r | |
34 | {\r | |
35 | __memset(dest, c, n);\r | |
36 | }\r | |
37 | \r | |
38 | __attribute__((__alias__("__aeabi_memset")))\r | |
39 | void __aeabi_memset4(void *dest, size_t n, int c);\r | |
40 | \r | |
41 | __attribute__((__alias__("__aeabi_memset")))\r | |
42 | void __aeabi_memset8(void *dest, size_t n, int c);\r | |
43 | \r | |
44 | void __aeabi_memclr(void *dest, size_t n)\r | |
45 | {\r | |
46 | __memset(dest, 0, n);\r | |
47 | }\r | |
48 | \r | |
49 | __attribute__((__alias__("__aeabi_memclr")))\r | |
50 | void __aeabi_memclr4(void *dest, size_t n);\r | |
51 | \r | |
52 | __attribute__((__alias__("__aeabi_memclr")))\r | |
53 | void __aeabi_memclr8(void *dest, size_t n);\r | |
54 | \r | |
55 | #endif\r |