Annotation of sys/lib/libkern/arch/i386/bzero.S, Revision 1.1
1.1 ! nbrk 1: /* $OpenBSD: bzero.S,v 1.3 2007/05/25 20:32:29 krw Exp $ */
! 2:
! 3: /*
! 4: * Written by J.T. Conklin <jtc@netbsd.org>.
! 5: * Public domain.
! 6: */
! 7:
! 8: #include <machine/asm.h>
! 9:
! 10: ENTRY(bzero)
! 11: pushl %edi
! 12: movl 8(%esp),%edi
! 13: movl 12(%esp),%edx
! 14:
! 15: cld /* set fill direction forward */
! 16: xorl %eax,%eax /* set fill data to 0 */
! 17:
! 18: /*
! 19: * if the string is too short, it's really not worth the overhead
! 20: * of aligning to word boundaries, etc. So we jump to a plain
! 21: * unaligned set.
! 22: */
! 23: cmpl $16,%edx
! 24: jb L1
! 25:
! 26: movl %edi,%ecx /* compute misalignment */
! 27: negl %ecx
! 28: andl $3,%ecx
! 29: subl %ecx,%edx
! 30: rep /* zero until word aligned */
! 31: stosb
! 32:
! 33: movl %edx,%ecx /* zero by words */
! 34: shrl $2,%ecx
! 35: andl $3,%edx
! 36: rep
! 37: stosl
! 38:
! 39: L1: movl %edx,%ecx /* zero remainder by bytes */
! 40: rep
! 41: stosb
! 42:
! 43: popl %edi
! 44: ret
CVSweb