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 1f /* ZF is set if all bits are 0 */ 13 incl %eax /* bits numbered from 1, not 0 */ 14 jmp 2f 15 16 _ALIGN_TRAPS 171: xorl %eax,%eax /* clear result */ 182: RETGUARD_CHECK(ffs, r11) 19 ret 20 lfence 21END(ffs) 22