| // ------------------------------------------------------------------------------ | |
| // | |
| // Copyright (c) 2019, Pete Batard. All rights reserved. | |
| // Copyright (c) 2021, Arm Limited. All rights reserved.<BR> | |
| // | |
| // SPDX-License-Identifier: BSD-2-Clause-Patent | |
| // | |
| // ------------------------------------------------------------------------------ | |
| #if defined (_M_ARM64) | |
| typedef unsigned __int64 size_t; | |
| #else | |
| typedef unsigned __int32 size_t; | |
| #endif | |
| void * | |
| memmove ( | |
| void *, | |
| const void *, | |
| size_t | |
| ); | |
| #pragma intrinsic(memmove) | |
| #pragma function(memmove) | |
| void * | |
| memmove ( | |
| void *dest, | |
| const void *src, | |
| size_t n | |
| ) | |
| { | |
| unsigned char *d; | |
| unsigned char const *s; | |
| d = dest; | |
| s = src; | |
| if (d < s) { | |
| while (n-- != 0) { | |
| *d++ = *s++; | |
| } | |
| } else { | |
| d += n; | |
| s += n; | |
| while (n-- != 0) { | |
| *--d = *--s; | |
| } | |
| } | |
| return dest; | |
| } |