lkml.org 
[lkml]   [1998]   [Apr]   [26]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
/
DateSun, 26 Apr 1998 21:18:48 +0200
FromAlexander Kjeldaas <>
SubjectRe: patch parport/bitops
> diff -u -r -N linux-2.1.97-orig/include/asm-ppc/bitops.h linux/include/asm-ppc/bitops.h
> --- linux-2.1.97-orig/include/asm-ppc/bitops.h	Sat Aug 16 18:51:09 1997
> +++ linux/include/asm-ppc/bitops.h	Wed Apr 22 09:29:09 1998
> @@ -97,6 +97,70 @@
>  }
> 
>  /*
> + * ffs: find first bit set. This is defined the same way as
> + * the libc and compiler builtin ffs routines, therefore
> + * differs in spirit from the above ffz (man ffs).
> + */
> +
> +extern __inline__ int ffs(int x)
> +{
[...]

On the PowerPC there is an instruction called 'cntlzw' - count leading
zeros word which does the above.

something like the following, but take it with a grain of salt since
I've never done any PowerPC programming before and I don't have a
machine to test this on.

extern __inline__ int ffs(int x)
{
	int result;
	asm ("cntlzw %0,%1" : "=r" (result) : "r" (x));
	return 32 - result; /* IBM backwards ordering of bits */
}

astor

-- 
 Alexander Kjeldaas, Guardian Networks AS, Trondheim, Norway
 http://www.guardian.no/


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu

\
 
 \ /
  Last update: 2005-03-22 13:42    [from the cache]
©2003-2008