xref: /openbsd-src/lib/libc/arch/i386/string/ffs.S (revision ae3cb403620ab940fbaabb3055fac045a63d56b7)
1*ae3cb403Sguenther/*	$OpenBSD: ffs.S,v 1.7 2018/01/18 08:23:44 guenther Exp $ */
2df930be7Sderaadt/*
3df930be7Sderaadt * Written by J.T. Conklin <jtc@netbsd.org>.
4df930be7Sderaadt * Public domain.
5df930be7Sderaadt */
6df930be7Sderaadt
7ea6088e7Sguenther#include "DEFS.h"
8df930be7Sderaadt
9df930be7SderaadtENTRY(ffs)
10df930be7Sderaadt	bsfl	4(%esp),%eax
11df930be7Sderaadt	jz	L1	 		/* ZF is set if all bits are 0 */
12df930be7Sderaadt	incl	%eax			/* bits numbered from 1, not 0 */
13df930be7Sderaadt	ret
14df930be7Sderaadt
153308d86bSderaadt	.align 2,0xcc
16df930be7SderaadtL1:	xorl	%eax,%eax		/* clear result */
17df930be7Sderaadt	ret
18*ae3cb403SguentherEND(ffs)
19*ae3cb403Sguenther.protected ffs
20