]> git.proxmox.com Git - mirror_edk2.git/blame - ArmPkg/Library/CompilerIntrinsicsLib/memmove_ms.c
ArmPkg: Fix Ecc error 3002 in CompilerIntrinsicsLib
[mirror_edk2.git] / ArmPkg / Library / CompilerIntrinsicsLib / memmove_ms.c
CommitLineData
482704df
PB
1//------------------------------------------------------------------------------\r
2//\r
3// Copyright (c) 2019, Pete Batard. All rights reserved.\r
53aabb97 4// Copyright (c) 2021, Arm Limited. All rights reserved.<BR>\r
482704df
PB
5//\r
6// SPDX-License-Identifier: BSD-2-Clause-Patent\r
7//\r
8//------------------------------------------------------------------------------\r
9\r
10#if defined(_M_ARM64)\r
11typedef unsigned __int64 size_t;\r
12#else\r
13typedef unsigned __int32 size_t;\r
14#endif\r
15\r
16void* memmove(void *, const void *, size_t);\r
17#pragma intrinsic(memmove)\r
18#pragma function(memmove)\r
19void* memmove(void *dest, const void *src, size_t n)\r
20{\r
21 unsigned char *d = dest;\r
22 unsigned char const *s = src;\r
23\r
24 if (d < s) {\r
53aabb97 25 while (n-- != 0) {\r
482704df 26 *d++ = *s++;\r
53aabb97 27 }\r
482704df
PB
28 } else {\r
29 d += n;\r
30 s += n;\r
53aabb97 31 while (n-- != 0) {\r
482704df 32 *--d = *--s;\r
53aabb97 33 }\r
482704df
PB
34 }\r
35\r
36 return dest;\r
37}\r