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