]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ArmPkg/Library/CompilerIntrinsicsLib/memcmp_ms.c
ArmPkg/CompilerIntrinsicsLib: Add memcmp, memmove intrinsics for MSFT
[mirror_edk2.git] / ArmPkg / Library / CompilerIntrinsicsLib / memcmp_ms.c
diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/memcmp_ms.c b/ArmPkg/Library/CompilerIntrinsicsLib/memcmp_ms.c
new file mode 100644 (file)
index 0000000..551f8e7
--- /dev/null
@@ -0,0 +1,31 @@
+//------------------------------------------------------------------------------\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
+int memcmp(void *, void *, size_t);\r
+#pragma intrinsic(memcmp)\r
+#pragma function(memcmp)\r
+int memcmp(const void *s1, const void *s2, size_t n)\r
+{\r
+  unsigned char const *t1 = s1;\r
+  unsigned char const *t2 = s2;\r
+\r
+  while (n--) {\r
+    if (*t1 != *t2)\r
+      return (int)*t1 - (int)*t2;\r
+    t1++;\r
+    t2++;\r
+  }\r
+\r
+  return 0;\r
+}\r