/* * Written by J.T. Conklin . * Public domain. */ #include #if defined(LIBC_SCCS) .text .asciz "$OpenBSD: bzero.S,v 1.2 1996/08/19 08:12:56 tholo Exp $" #endif 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