From mboxrd@z Thu Jan 1 00:00:00 1970 From: Aneesh V Date: Tue, 05 Jul 2011 10:12:59 +0530 Subject: [U-Boot] [PATCH 3/6] arm: add __ilog2 function In-Reply-To: <1309275583-11763-4-git-send-email-robherring2@gmail.com> References: <1309275583-11763-1-git-send-email-robherring2@gmail.com> <1309275583-11763-4-git-send-email-robherring2@gmail.com> Message-ID: <4E129653.7050807@ti.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Rob, On Tuesday 28 June 2011 09:09 PM, Rob Herring wrote: > From: Rob Herring > > Add __ilog2 function for ARM. Needed for ahci.c > > Signed-off-by: Rob Herring > Cc: Albert ARIBAUD > --- > arch/arm/include/asm/bitops.h | 9 +++++++++ > 1 files changed, 9 insertions(+), 0 deletions(-) > > diff --git a/arch/arm/include/asm/bitops.h b/arch/arm/include/asm/bitops.h > index 270f163..0420182 100644 > --- a/arch/arm/include/asm/bitops.h > +++ b/arch/arm/include/asm/bitops.h > @@ -106,6 +106,15 @@ static inline int test_bit(int nr, const void * addr) > return ((unsigned char *) addr)[nr>> 3]& (1U<< (nr& 7)); > } > > +extern __inline__ int __ilog2(unsigned int x) > +{ > + int ret; > + > + asm("clz\t%0, %1" : "=r" (ret) : "r" (x)); I tried doing the same sometime back for the same need. I had to abandon it because CLZ seems to be added only in ARMv5. And at least one ARMv7 SoC uses -march=armv4 while building. best regards, Aneesh