root/sys/lib/libkern/arch/i386/bcmp.S
/*      $OpenBSD: bcmp.S,v 1.3 2014/11/29 18:51:23 tedu Exp $   */

/*
 * Written by J.T. Conklin <jtc@netbsd.org>.
 * Public domain.
 */

#include <machine/asm.h>

ENTRY(bcmp)
        pushl   %edi
        pushl   %esi
        movl    12(%esp),%edi
        movl    16(%esp),%esi
        xorl    %eax,%eax               /* clear return value */

        movl    20(%esp),%ecx           /* compare by words */
        shrl    $2,%ecx
        repe
        cmpsl
        jne     L1

        movl    20(%esp),%ecx           /* compare remainder by bytes */
        andl    $3,%ecx
        repe
        cmpsb
        je      L2

L1:     incl    %eax
L2:     popl    %esi
        popl    %edi
        ret