1 1.1 cgd /* 2 1.8 salo * Written by J.T. Conklin <jtc (at) NetBSD.org>. 3 1.6 jtc * Public domain. 4 1.1 cgd */ 5 1.1 cgd 6 1.4 jtc #include <machine/asm.h> 7 1.4 jtc 8 1.2 jtc #if defined(LIBC_SCCS) 9 1.8 salo RCSID("$NetBSD: bcmp.S,v 1.8 2003/07/26 19:24:33 salo Exp $") 10 1.2 jtc #endif 11 1.1 cgd 12 1.1 cgd ENTRY(bcmp) 13 1.1 cgd pushl %edi 14 1.1 cgd pushl %esi 15 1.1 cgd movl 12(%esp),%edi 16 1.1 cgd movl 16(%esp),%esi 17 1.1 cgd xorl %eax,%eax /* clear return value */ 18 1.1 cgd cld /* set compare direction forward */ 19 1.1 cgd 20 1.5 jtc movl 20(%esp),%ecx /* compare by words */ 21 1.1 cgd shrl $2,%ecx 22 1.1 cgd repe 23 1.1 cgd cmpsl 24 1.1 cgd jne L1 25 1.1 cgd 26 1.5 jtc movl 20(%esp),%ecx /* compare remainder by bytes */ 27 1.1 cgd andl $3,%ecx 28 1.1 cgd repe 29 1.1 cgd cmpsb 30 1.1 cgd je L2 31 1.1 cgd 32 1.1 cgd L1: incl %eax 33 1.1 cgd L2: popl %esi 34 1.1 cgd popl %edi 35 1.1 cgd ret 36