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