]> git.proxmox.com Git - mirror_edk2.git/blame - ArmPkg/Library/CompilerIntrinsicsLib/memmove_ms.c
ArmPkg/CompilerIntrinsicsLib: Add memcmp, memmove intrinsics for MSFT
[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
4//\r
5// SPDX-License-Identifier: BSD-2-Clause-Patent\r
6//\r
7//------------------------------------------------------------------------------\r
8\r
9#if defined(_M_ARM64)\r
10typedef unsigned __int64 size_t;\r
11#else\r
12typedef unsigned __int32 size_t;\r
13#endif\r
14\r
15void* memmove(void *, const void *, size_t);\r
16#pragma intrinsic(memmove)\r
17#pragma function(memmove)\r
18void* memmove(void *dest, const void *src, size_t n)\r
19{\r
20 unsigned char *d = dest;\r
21 unsigned char const *s = src;\r
22\r
23 if (d < s) {\r
24 while (n--)\r
25 *d++ = *s++;\r
26 } else {\r
27 d += n;\r
28 s += n;\r
29 while (n--)\r
30 *--d = *--s;\r
31 }\r
32\r
33 return dest;\r
34}\r