/* * Written by J.T. Conklin . * Public domain. * Adapted for NetBSD/x86_64 by Frank van der Linden */ #include "SYS.h" ENTRY(memchr) movb %sil,%al /* set character to search for */ movq %rdx,%rcx /* set length of search */ testq %rcx,%rcx /* test for len == 0 */ jz L1 cld /* set search forward */ repne /* search! */ scasb jne L1 /* scan failed, return null */ leaq -1(%rdi),%rax /* adjust result of scan */ ret L1: xorq %rax,%rax ret END_STRONG(memchr)