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.10 uebayasi RCSID("$NetBSD: bcmp.S,v 1.10 2014/05/23 02:34:19 uebayasi 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 19 1.5 jtc movl 20(%esp),%ecx /* compare by words */ 20 1.1 cgd shrl $2,%ecx 21 1.1 cgd repe 22 1.1 cgd cmpsl 23 1.1 cgd jne L1 24 1.1 cgd 25 1.5 jtc movl 20(%esp),%ecx /* compare remainder by bytes */ 26 1.1 cgd andl $3,%ecx 27 1.1 cgd repe 28 1.1 cgd cmpsb 29 1.1 cgd je L2 30 1.1 cgd 31 1.1 cgd L1: incl %eax 32 1.1 cgd L2: popl %esi 33 1.1 cgd popl %edi 34 1.1 cgd ret 35 1.10 uebayasi END(bcmp) 36