summaryrefslogtreecommitdiff
path: root/libiberty/ffs.c
diff options
context:
space:
mode:
authorDJ Delorie <dj@delorie.com>2001-07-05 17:29:17 +0000
committerDJ Delorie <dj@delorie.com>2001-07-05 17:29:17 +0000
commit4e606e6fd6b08884fbf28da68403cc9f5e6f2e87 (patch)
treea4c280c65a67fa4ce6b26711c5d97789346b0dc2 /libiberty/ffs.c
parente0bf4fcf4a4bbf071d6ad2d7a5a94176b399f610 (diff)
downloadbinutils-redhat-4e606e6fd6b08884fbf28da68403cc9f5e6f2e87.tar.gz
merge from gcc
Diffstat (limited to 'libiberty/ffs.c')
-rw-r--r--libiberty/ffs.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/libiberty/ffs.c b/libiberty/ffs.c
new file mode 100644
index 0000000000..8ffb03e7c5
--- /dev/null
+++ b/libiberty/ffs.c
@@ -0,0 +1,29 @@
+/* ffs -- Find the first bit set in the parameter
+
+NAME
+ ffs -- Find the first bit set in the parameter
+
+SYNOPSIS
+ int ffs (int valu)
+
+DESCRIPTION
+ Find the first bit set in the parameter. Bits are numbered from
+ right to left, starting with bit 1.
+
+*/
+
+int
+ffs (valu)
+ register int valu;
+{
+ register int bit;
+
+ if (valu == 0)
+ return 0;
+
+ for (bit = 1; !(valu & 1); bit++)
+ valu >>= 1;
+
+ return bit;
+}
+