/* $OpenBSD: ffs.S,v 1.1 2004/01/28 01:44:45 mickey Exp $ */ | |
/* | |
* Written by J.T. Conklin <jtc@netbsd.org>. | |
* Public domain. | |
* Adapted for NetBSD/x86_64 by Frank van der Linden <fvdl@wasabisystems.com> | |
*/ | |
#include <machine/asm.h> | |
ENTRY(ffs) | |
bsfl %edi,%eax | |
jz L1 /* ZF is set if all bits are 0 */ | |
incl %eax /* bits numbered from 1, not 0 */ | |
ret | |
_ALIGN_TEXT | |
L1: xorl %eax,%eax /* clear result */ | |
ret |