]> git.saurik.com Git - apple/xnu.git/blobdiff - libsyscall/wrappers/string/memcpy.c
xnu-7195.101.1.tar.gz
[apple/xnu.git] / libsyscall / wrappers / string / memcpy.c
index ef30a90ba3897563673db14ac5f6684955efe861..28920058c79c16d26c1558d35b4a046fe630578d 100644 (file)
  * sizeof(word) MUST BE A POWER OF TWO
  * SO THAT wmask BELOW IS ALL ONES
  */
-typedef        int word;               /* "word" used for optimal copy speed */
+typedef int word;               /* "word" used for optimal copy speed */
 
-#define        wsize   sizeof(word)
-#define        wmask   (wsize - 1)
+#define wsize   sizeof(word)
+#define wmask   (wsize - 1)
 
 /*
  * Copy a block of memory, handling overlap.
@@ -48,35 +48,38 @@ typedef     int word;               /* "word" used for optimal copy speed */
  */
 
 __attribute__((visibility("hidden")))
-void * memcpy(void *dst0, const void *src0, size_t length)
+void *
+_libkernel_memmove(void *dst0, const void *src0, size_t length)
 {
        char *dst = dst0;
        const char *src = src0;
        size_t t;
-       
-       if (length == 0 || dst == src)          /* nothing to do */
+
+       if (length == 0 || dst == src) {        /* nothing to do */
                goto done;
-       
+       }
+
        /*
         * Macros: loop-t-times; and loop-t-times, t>0
         */
-#define        TLOOP(s) if (t) TLOOP1(s)
-#define        TLOOP1(s) do { s; } while (--t)
-       
+#define TLOOP(s) if (t) TLOOP1(s)
+#define TLOOP1(s) do { s; } while (--t)
+
        if ((unsigned long)dst < (unsigned long)src) {
                /*
                 * Copy forward.
                 */
-               t = (uintptr_t)src;     /* only need low bits */
+               t = (uintptr_t)src;     /* only need low bits */
                if ((t | (uintptr_t)dst) & wmask) {
                        /*
                         * Try to align operands.  This cannot be done
                         * unless the low bits match.
                         */
-                       if ((t ^ (uintptr_t)dst) & wmask || length < wsize)
+                       if ((t ^ (uintptr_t)dst) & wmask || length < wsize) {
                                t = length;
-                       else
+                       } else {
                                t = wsize - (t & wmask);
+                       }
                        length -= t;
                        TLOOP1(*dst++ = *src++);
                }
@@ -97,10 +100,11 @@ void * memcpy(void *dst0, const void *src0, size_t length)
                dst += length;
                t = (uintptr_t)src;
                if ((t | (uintptr_t)dst) & wmask) {
-                       if ((t ^ (uintptr_t)dst) & wmask || length <= wsize)
+                       if ((t ^ (uintptr_t)dst) & wmask || length <= wsize) {
                                t = length;
-                       else
+                       } else {
                                t &= wmask;
+                       }
                        length -= t;
                        TLOOP1(*--dst = *--src);
                }
@@ -110,14 +114,7 @@ void * memcpy(void *dst0, const void *src0, size_t length)
                TLOOP(*--dst = *--src);
        }
 done:
-       return (dst0);
-}
-
-__attribute__((visibility("hidden")))
-void *
-memmove(void *s1, const void *s2, size_t n)
-{
-       return memcpy(s1, s2, n);
+       return dst0;
 }
 
 __attribute__((visibility("hidden")))