]> git.proxmox.com Git - mirror_edk2.git/blame - 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
429309e0 1// ------------------------------------------------------------------------------\r
482704df
PB
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
429309e0 8// ------------------------------------------------------------------------------\r
482704df 9\r
429309e0
MK
10#if defined (_M_ARM64)\r
11typedef unsigned __int64 size_t;\r
482704df 12#else\r
429309e0 13typedef unsigned __int32 size_t;\r
482704df
PB
14#endif\r
15\r
429309e0
MK
16void *\r
17memmove (\r
18 void *,\r
19 const void *,\r
20 size_t\r
21 );\r
22\r
482704df
PB
23#pragma intrinsic(memmove)\r
24#pragma function(memmove)\r
429309e0
MK
25void *\r
26memmove (\r
27 void *dest,\r
28 const void *src,\r
29 size_t n\r
30 )\r
482704df 31{\r
429309e0
MK
32 unsigned char *d;\r
33 unsigned char const *s;\r
fb48f1e2
PG
34\r
35 d = dest;\r
36 s = src;\r
482704df
PB
37\r
38 if (d < s) {\r
53aabb97 39 while (n-- != 0) {\r
482704df 40 *d++ = *s++;\r
53aabb97 41 }\r
482704df
PB
42 } else {\r
43 d += n;\r
44 s += n;\r
53aabb97 45 while (n-- != 0) {\r
482704df 46 *--d = *--s;\r
53aabb97 47 }\r
482704df
PB
48 }\r
49\r
50 return dest;\r
51}\r