]> git.proxmox.com Git - mirror_edk2.git/blame_incremental - ArmPkg/Library/CompilerIntrinsicsLib/memmove_ms.c
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / ArmPkg / Library / CompilerIntrinsicsLib / memmove_ms.c
... / ...
CommitLineData
1// ------------------------------------------------------------------------------\r
2//\r
3// Copyright (c) 2019, Pete Batard. All rights reserved.\r
4// Copyright (c) 2021, Arm Limited. All rights reserved.<BR>\r
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 *\r
17memmove (\r
18 void *,\r
19 const void *,\r
20 size_t\r
21 );\r
22\r
23#pragma intrinsic(memmove)\r
24#pragma function(memmove)\r
25void *\r
26memmove (\r
27 void *dest,\r
28 const void *src,\r
29 size_t n\r
30 )\r
31{\r
32 unsigned char *d;\r
33 unsigned char const *s;\r
34\r
35 d = dest;\r
36 s = src;\r
37\r
38 if (d < s) {\r
39 while (n-- != 0) {\r
40 *d++ = *s++;\r
41 }\r
42 } else {\r
43 d += n;\r
44 s += n;\r
45 while (n-- != 0) {\r
46 *--d = *--s;\r
47 }\r
48 }\r
49\r
50 return dest;\r
51}\r