xref: /openbsd-src/sys/lib/libkern/arch/amd64/scanc.S (revision 28c675773680115a49ba777d0361775c11aa12d6)
1f5df1827Smickey/*	$NetBSD: scanc.S,v 1.1 2001/06/19 00:22:47 fvdl Exp $	*/
2f5df1827Smickey
3f5df1827Smickey/*-
4f5df1827Smickey * Copyright (c) 1998 The NetBSD Foundation, Inc.
5f5df1827Smickey * All rights reserved.
6f5df1827Smickey *
7f5df1827Smickey * This code is derived from software contributed to The NetBSD Foundation
8f5df1827Smickey * by Charles M. Hannum.
9f5df1827Smickey *
10f5df1827Smickey * Redistribution and use in source and binary forms, with or without
11f5df1827Smickey * modification, are permitted provided that the following conditions
12f5df1827Smickey * are met:
13f5df1827Smickey * 1. Redistributions of source code must retain the above copyright
14f5df1827Smickey *    notice, this list of conditions and the following disclaimer.
15f5df1827Smickey * 2. Redistributions in binary form must reproduce the above copyright
16f5df1827Smickey *    notice, this list of conditions and the following disclaimer in the
17f5df1827Smickey *    documentation and/or other materials provided with the distribution.
18f5df1827Smickey *
19f5df1827Smickey * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20f5df1827Smickey * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21f5df1827Smickey * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22f5df1827Smickey * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23f5df1827Smickey * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24f5df1827Smickey * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25f5df1827Smickey * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26f5df1827Smickey * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27f5df1827Smickey * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28f5df1827Smickey * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29f5df1827Smickey * POSSIBILITY OF SUCH DAMAGE.
30f5df1827Smickey */
31f5df1827Smickey
32f5df1827Smickey/*
33f5df1827Smickey * Adapted for NetBSD/x86_64 by Frank van der Linden <fvdl@wasabisystems.com>
34f5df1827Smickey */
35f5df1827Smickey
36f5df1827Smickey#include <machine/asm.h>
37f5df1827Smickey
38f5df1827SmickeyENTRY(scanc)
391d66f0a0Smortimer	RETGUARD_SETUP(scanc, r10)
40f5df1827Smickey	movq	%rdx,%r11
41f5df1827Smickey	movb	%cl,%dl
42f5df1827Smickey	movl	%edi,%ecx
43f5df1827Smickey	testl	%ecx,%ecx
44f5df1827Smickey	jz	2f
45f5df1827Smickey	movq	%r11,%rdi
46f5df1827Smickey	xorq	%rax,%rax
47f5df1827Smickey1:
48f5df1827Smickey	lodsb
49f5df1827Smickey	testb	%dl,(%rax,%rdi)
50f5df1827Smickey	jnz	2f
51f5df1827Smickey	decl	%ecx
52f5df1827Smickey	jnz	1b
53f5df1827Smickey2:
54f5df1827Smickey	movl	%ecx,%eax
551d66f0a0Smortimer	RETGUARD_CHECK(scanc, r10)
56f5df1827Smickey	ret
57fc541c5dSguenther	lfence
58*28c67577SguentherEND(scanc)
59