summaryrefslogtreecommitdiffstats
path: root/libc/arch-x86/string/fss.S
diff options
context:
space:
mode:
Diffstat (limited to 'libc/arch-x86/string/fss.S')
-rw-r--r--libc/arch-x86/string/fss.S17
1 files changed, 17 insertions, 0 deletions
diff --git a/libc/arch-x86/string/fss.S b/libc/arch-x86/string/fss.S
new file mode 100644
index 0000000..96affab
--- /dev/null
+++ b/libc/arch-x86/string/fss.S
@@ -0,0 +1,17 @@
+/* $OpenBSD: ffs.S,v 1.3 2005/08/07 11:30:38 espie Exp $ */
+/*
+ * Written by J.T. Conklin <jtc@netbsd.org>.
+ * Public domain.
+ */
+
+#include <machine/asm.h>
+
+ENTRY(ffs)
+ bsfl 4(%esp),%eax
+ jz L1 /* ZF is set if all bits are 0 */
+ incl %eax /* bits numbered from 1, not 0 */
+ ret
+
+ .align 2
+L1: xorl %eax,%eax /* clear result */
+ ret