15b859c19Sderaadt/* 25b859c19Sderaadt * Written by J.T. Conklin <jtc@netbsd.org>. 35b859c19Sderaadt * Public domain. 45b859c19Sderaadt * Adapted for NetBSD/x86_64 by Frank van der Linden <fvdl@wasabisystems.com> 55b859c19Sderaadt */ 65b859c19Sderaadt 7b4551fdeSguenther#include "DEFS.h" 85b859c19Sderaadt 95b859c19SderaadtENTRY(memchr) 10*631951aaSmortimer RETGUARD_SETUP(memchr, r11) 115b859c19Sderaadt movb %sil,%al /* set character to search for */ 125b859c19Sderaadt movq %rdx,%rcx /* set length of search */ 135b859c19Sderaadt testq %rcx,%rcx /* test for len == 0 */ 145b859c19Sderaadt jz L1 155b859c19Sderaadt cld /* set search forward */ 165b859c19Sderaadt repne /* search! */ 175b859c19Sderaadt scasb 185b859c19Sderaadt jne L1 /* scan failed, return null */ 195b859c19Sderaadt leaq -1(%rdi),%rax /* adjust result of scan */ 20*631951aaSmortimer jmp L2 215b859c19SderaadtL1: xorq %rax,%rax 22*631951aaSmortimerL2: RETGUARD_CHECK(memchr, r11) 235b859c19Sderaadt ret 249b9d2a55SguentherEND_STRONG(memchr) 25