Home | History | Annotate | Line # | Download | only in string
bzero.S revision 1.9
      1 /*
      2  * Written by J.T. Conklin <jtc (at) NetBSD.org>.
      3  * Public domain.
      4  */
      5 
      6 #include <machine/asm.h>
      7 
      8 #if defined(LIBC_SCCS)
      9 	RCSID("$NetBSD: bzero.S,v 1.9 2003/07/26 19:24:33 salo Exp $")
     10 #endif
     11 
     12 ENTRY(bzero)
     13 	pushl	%edi
     14 	movl	8(%esp),%edi
     15 	movl	12(%esp),%edx
     16 
     17 	cld				/* set fill direction forward */
     18 	xorl	%eax,%eax		/* set fill data to 0 */
     19 
     20 	/*
     21 	 * if the string is too short, it's really not worth the overhead
     22 	 * of aligning to word boundries, etc.  So we jump to a plain
     23 	 * unaligned set.
     24 	 */
     25 	cmpl	$16,%edx
     26 	jb	L1
     27 
     28 	movl	%edi,%ecx		/* compute misalignment */
     29 	negl	%ecx
     30 	andl	$3,%ecx
     31 	subl	%ecx,%edx
     32 	rep				/* zero until word aligned */
     33 	stosb
     34 
     35 	movl	%edx,%ecx		/* zero by words */
     36 	shrl	$2,%ecx
     37 	andl	$3,%edx
     38 	rep
     39 	stosl
     40 
     41 L1:	movl	%edx,%ecx		/* zero remainder by bytes */
     42 	rep
     43 	stosb
     44 
     45 	popl	%edi
     46 	ret
     47