1/* 2 * Written by J.T. Conklin <jtc@netbsd.org>. 3 * Public domain. 4 * Adapted for NetBSD/x86_64 by Frank van der Linden <fvdl@wasabisystems.com> 5 */ 6 7#include <machine/asm.h> 8 9ENTRY(ffs) 10 RETGUARD_SETUP(ffs, r11) 11 bsfl %edi,%eax 12 jz L1 /* ZF is set if all bits are 0 */ 13 incl %eax /* bits numbered from 1, not 0 */ 14 jmp L2 15 16 _ALIGN_TRAPS 17L1: xorl %eax,%eax /* clear result */ 18L2: RETGUARD_CHECK(ffs, r11) 19 ret 20