summaryrefslogtreecommitdiffstats
path: root/contrib/binutils/libiberty/ffs.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/binutils/libiberty/ffs.c')
-rw-r--r--contrib/binutils/libiberty/ffs.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/contrib/binutils/libiberty/ffs.c b/contrib/binutils/libiberty/ffs.c
new file mode 100644
index 0000000..de047e2
--- /dev/null
+++ b/contrib/binutils/libiberty/ffs.c
@@ -0,0 +1,27 @@
+/* ffs -- Find the first bit set in the parameter
+
+@deftypefn Supplemental int ffs (int @var{valu})
+
+Find the first (least significant) bit set in @var{valu}. Bits are
+numbered from right to left, starting with bit 1 (corresponding to the
+value 1). If @var{valu} is zero, zero is returned.
+
+@end deftypefn
+
+*/
+
+int
+ffs (valu)
+ register int valu;
+{
+ register int bit;
+
+ if (valu == 0)
+ return 0;
+
+ for (bit = 1; !(valu & 1); bit++)
+ valu >>= 1;
+
+ return bit;
+}
+
OpenPOWER on IntegriCloud