1*737e0611Stedu/* $OpenBSD: memchr.S,v 1.2 2014/11/29 18:51:23 tedu Exp $ */ 2f47c597bSchuck 3f47c597bSchuck/* 4f47c597bSchuck * Written by J.T. Conklin <jtc@netbsd.org>. 5f47c597bSchuck * Public domain. 6f47c597bSchuck */ 7f47c597bSchuck 8f47c597bSchuck#include <machine/asm.h> 9f47c597bSchuck 10f47c597bSchuckENTRY(memchr) 11f47c597bSchuck pushl %edi 12f47c597bSchuck movl 8(%esp),%edi /* string address */ 13f47c597bSchuck movl 12(%esp),%eax /* set character to search for */ 14f47c597bSchuck movl 16(%esp),%ecx /* set length of search */ 15f47c597bSchuck testl %ecx,%ecx /* test for len == 0 */ 16f47c597bSchuck jz L1 17f47c597bSchuck repne /* search! */ 18f47c597bSchuck scasb 19f47c597bSchuck jne L1 /* scan failed, return null */ 20f47c597bSchuck leal -1(%edi),%eax /* adjust result of scan */ 21f47c597bSchuck popl %edi 22f47c597bSchuck ret 23f47c597bSchuck .align 2,0x90 24f47c597bSchuckL1: xorl %eax,%eax 25f47c597bSchuck popl %edi 26f47c597bSchuck ret 27