Annotation of sys/lib/libkern/arch/amd64/bzero.S, Revision 1.1
1.1 ! nbrk 1: /*
! 2: * Written by J.T. Conklin <jtc@netbsd.org>.
! 3: * Public domain.
! 4: * Adapted for NetBSD/x86_64 by Frank van der Linden <fvdl@wasabisystems.com>
! 5: */
! 6:
! 7: #include <machine/asm.h>
! 8:
! 9: #if defined(LIBC_SCCS)
! 10: RCSID("$NetBSD: bzero.S,v 1.1 2001/06/19 00:22:45 fvdl Exp $")
! 11: #endif
! 12:
! 13: ENTRY(bzero)
! 14: movq %rsi,%rdx
! 15:
! 16: cld /* set fill direction forward */
! 17: xorq %rax,%rax /* set fill data to 0 */
! 18:
! 19: /*
! 20: * if the string is too short, it's really not worth the overhead
! 21: * of aligning to word boundaries, etc. So we jump to a plain
! 22: * unaligned set.
! 23: */
! 24: cmpq $16,%rdx
! 25: jb L1
! 26:
! 27: movq %rdi,%rcx /* compute misalignment */
! 28: negq %rcx
! 29: andq $7,%rcx
! 30: subq %rcx,%rdx
! 31: rep /* zero until word aligned */
! 32: stosb
! 33:
! 34: movq %rdx,%rcx /* zero by words */
! 35: shrq $3,%rcx
! 36: andq $7,%rdx
! 37: rep
! 38: stosq
! 39:
! 40: L1: movq %rdx,%rcx /* zero remainder by bytes */
! 41: rep
! 42: stosb
! 43:
! 44: ret
CVSweb