| /* $OpenBSD: bcmp.S,v 1.3 2005/08/07 11:30:38 espie 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 */ |
| cld /* set compare direction forward */ |
| |
| 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 |
| END(bcmp) |