]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/x86_64/bzero.s
xnu-3248.40.184.tar.gz
[apple/xnu.git] / osfmk / x86_64 / bzero.s
index cb2426300427e63a0827ea6cda06ea5bba784fa9..be490d18cbda37d16a0290495cdbe92d9afea98e 100644 (file)
@@ -84,11 +84,33 @@ ENTRY(memset)
        movq    %r8 ,%rax               /* returns its first argument */
        ret
 
+/*
+ * void *memset_word(void * addr, int pattern, size_t length)
+ */
+
+ENTRY(memset_word)
+       movq    %rdi, %r8
+       movq    %rsi, %rax              /* move pattern (arg2) to rax */
+       mov     %eax, %ecx
+       shlq    $32,%rax
+       orq     %rcx, %rax 
+       cld                             /* reset direction flag */
+       movq    %rdx, %rcx              /* mov quads first */
+       shrq    $1, %rcx
+       rep
+       stosq
+       movq    %rdx,%rcx               /* if necessary, mov 32 bit word */
+       andq    $1,%rcx
+       rep
+       stosl
+       movq    %r8 ,%rax               /* returns its first argument */
+       ret
+
 /*
  * void bzero(char * addr, size_t length)
  */
 Entry(blkclr)
-ENTRY(bzero)
+ENTRY2(bzero,__bzero)
        movq    %rsi,%rcx
        xorq    %rax,%rax
        shrq    $3,%rcx