mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-04-18 04:11:31 +00:00
x86: Use the generic bitops headers
Use the generic bitops and also add custom __ffs() implementation as per the kernel. Also align the ffs() implementation with the kernel. Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> Reviewed-by: Tom Rini <trini@konsulko.com> Reviewed-by: Heiko Schocher <hs@denx.de> Reviewed-by: Jagan Teki <jteki@openedev.com>
This commit is contained in:
parent
56adb7b308
commit
6c2f758cee
1 changed files with 20 additions and 1 deletions
|
@ -14,6 +14,10 @@
|
||||||
* bit 0 is the LSB of addr; bit 32 is the LSB of (addr+1).
|
* bit 0 is the LSB of addr; bit 32 is the LSB of (addr+1).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <asm-generic/bitops/fls.h>
|
||||||
|
#include <asm-generic/bitops/__fls.h>
|
||||||
|
#include <asm-generic/bitops/fls64.h>
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
#define LOCK_PREFIX "lock ; "
|
#define LOCK_PREFIX "lock ; "
|
||||||
#else
|
#else
|
||||||
|
@ -331,6 +335,20 @@ static __inline__ unsigned long ffz(unsigned long word)
|
||||||
|
|
||||||
#ifdef __KERNEL__
|
#ifdef __KERNEL__
|
||||||
|
|
||||||
|
/**
|
||||||
|
* __ffs - find first set bit in word
|
||||||
|
* @word: The word to search
|
||||||
|
*
|
||||||
|
* Undefined if no bit exists, so code should check against 0 first.
|
||||||
|
*/
|
||||||
|
static inline unsigned long __ffs(unsigned long word)
|
||||||
|
{
|
||||||
|
__asm__("rep; bsf %1,%0"
|
||||||
|
: "=r" (word)
|
||||||
|
: "rm" (word));
|
||||||
|
return word;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ffs - find first bit set
|
* ffs - find first bit set
|
||||||
* @x: the word to search
|
* @x: the word to search
|
||||||
|
@ -346,7 +364,8 @@ static __inline__ int ffs(int x)
|
||||||
__asm__("bsfl %1,%0\n\t"
|
__asm__("bsfl %1,%0\n\t"
|
||||||
"jnz 1f\n\t"
|
"jnz 1f\n\t"
|
||||||
"movl $-1,%0\n"
|
"movl $-1,%0\n"
|
||||||
"1:" : "=r" (r) : "g" (x));
|
"1:" : "=r" (r) : "rm" (x));
|
||||||
|
|
||||||
return r+1;
|
return r+1;
|
||||||
}
|
}
|
||||||
#define PLATFORM_FFS
|
#define PLATFORM_FFS
|
||||||
|
|
Loading…
Add table
Reference in a new issue