]> git.proxmox.com Git - mirror_edk2.git/blame - ArmPkg/Library/CompilerIntrinsicsLib/memset.c
ArmPkg: convert LFs to CRLF, expand hard TABs
[mirror_edk2.git] / ArmPkg / Library / CompilerIntrinsicsLib / memset.c
CommitLineData
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
9typedef __SIZE_TYPE__ size_t;\r
10\r
11static __attribute__((__used__))\r
12void *__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
29void *memset(void *dest, int c, size_t n);\r
30\r
31#ifdef __arm__\r
32\r
33void __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
39void __aeabi_memset4(void *dest, size_t n, int c);\r
40\r
41__attribute__((__alias__("__aeabi_memset")))\r
42void __aeabi_memset8(void *dest, size_t n, int c);\r
43\r
44void __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
50void __aeabi_memclr4(void *dest, size_t n);\r
51\r
52__attribute__((__alias__("__aeabi_memclr")))\r
53void __aeabi_memclr8(void *dest, size_t n);\r
54\r
55#endif\r