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