]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ArmPkg/Library/CompilerIntrinsicsLib/memmove_ms.c
ArmPkg/CompilerIntrinsicsLib: Add memcmp, memmove intrinsics for MSFT
[mirror_edk2.git] / ArmPkg / Library / CompilerIntrinsicsLib / memmove_ms.c
diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/memmove_ms.c b/ArmPkg/Library/CompilerIntrinsicsLib/memmove_ms.c
new file mode 100644 (file)
index 0000000..5b261ef
--- /dev/null
@@ -0,0 +1,34 @@
+//------------------------------------------------------------------------------\r
+//\r
+// Copyright (c) 2019, Pete Batard. All rights reserved.\r
+//\r
+// SPDX-License-Identifier: BSD-2-Clause-Patent\r
+//\r
+//------------------------------------------------------------------------------\r
+\r
+#if defined(_M_ARM64)\r
+typedef unsigned __int64  size_t;\r
+#else\r
+typedef unsigned __int32  size_t;\r
+#endif\r
+\r
+void* memmove(void *, const void *, size_t);\r
+#pragma intrinsic(memmove)\r
+#pragma function(memmove)\r
+void* memmove(void *dest, const void *src, size_t n)\r
+{\r
+  unsigned char *d = dest;\r
+  unsigned char const *s = src;\r
+\r
+  if (d < s) {\r
+    while (n--)\r
+      *d++ = *s++;\r
+  } else {\r
+    d += n;\r
+    s += n;\r
+    while (n--)\r
+      *--d = *--s;\r
+  }\r
+\r
+  return dest;\r
+}\r