]>
Commit | Line | Data |
---|---|---|
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 | |
11 | typedef unsigned __int64 size_t;\r | |
12 | #else\r | |
13 | typedef unsigned __int32 size_t;\r | |
14 | #endif\r | |
15 | \r | |
16 | void *\r | |
17 | memmove (\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 | |
25 | void *\r | |
26 | memmove (\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 |