/* $OpenBSD: bzero.S,v 1.3 2005/08/07 11:30:38 espie Exp $ */ /* * Written by J.T. Conklin <jtc@netbsd.org>. * Public domain. */ #include <machine/asm.h> ENTRY(bzero) pushl %edi movl 8(%esp),%edi movl 12(%esp),%edx cld /* set fill direction forward */ xorl %eax,%eax /* set fill data to 0 */ /* * if the string is too short, it's really not worth the overhead * of aligning to word boundries, etc. So we jump to a plain * unaligned set. */ cmpl $16,%edx jb L1 movl %edi,%ecx /* compute misalignment */ negl %ecx andl $3,%ecx subl %ecx,%edx rep /* zero until word aligned */ stosb movl %edx,%ecx /* zero by words */ shrl $2,%ecx andl $3,%edx rep stosl L1: movl %edx,%ecx /* zero remainder by bytes */ rep stosb popl %edi ret