1/* 2 * Written by J.T. Conklin <jtc@netbsd.org>. 3 * Public domain. 4 * Adapted for NetBSD/x86_64 by Frank van der Linden <fvdl@wasabisystems.com> 5 */ 6 7#include "DEFS.h" 8 9ENTRY(memchr) 10 RETGUARD_SETUP(memchr, r11) 11 movb %sil,%al /* set character to search for */ 12 movq %rdx,%rcx /* set length of search */ 13 testq %rcx,%rcx /* test for len == 0 */ 14 jz L1 15 cld /* set search forward */ 16 repne /* search! */ 17 scasb 18 jne L1 /* scan failed, return null */ 19 leaq -1(%rdi),%rax /* adjust result of scan */ 20 jmp L2 21L1: xorq %rax,%rax 22L2: RETGUARD_CHECK(memchr, r11) 23 ret 24END_STRONG(memchr) 25