1b6cbf720SGianluca Guida/* 2b6cbf720SGianluca Guida * Written by J.T. Conklin <jtc@NetBSD.org>. 3b6cbf720SGianluca Guida * Public domain. 4b6cbf720SGianluca Guida * Adapted for NetBSD/x86_64 by Frank van der Linden <fvdl@wasabisystems.com> 5b6cbf720SGianluca Guida */ 6b6cbf720SGianluca Guida 7b6cbf720SGianluca Guida#include <machine/asm.h> 8b6cbf720SGianluca Guida 9b6cbf720SGianluca Guida#if defined(LIBC_SCCS) 10*0a6a1f1dSLionel Sambuc RCSID("$NetBSD: ffs.S,v 1.5 2014/03/22 19:16:34 jakllsch Exp $") 11b6cbf720SGianluca Guida#endif 12b6cbf720SGianluca Guida 13b6cbf720SGianluca GuidaENTRY(ffs) 14b6cbf720SGianluca Guida bsfl %edi,%eax 15b6cbf720SGianluca Guida jz 1f /* ZF is set if all bits are 0 */ 16b6cbf720SGianluca Guida incl %eax /* bits numbered from 1, not 0 */ 17b6cbf720SGianluca Guida ret 18b6cbf720SGianluca Guida 19b6cbf720SGianluca Guida1: xorl %eax,%eax /* clear result */ 20b6cbf720SGianluca Guida ret 21*0a6a1f1dSLionel SambucEND(ffs) 22