mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-11-04 05:50:17 +00:00 
			
		
		
		
	Commits 02f99901ed1c9d828e3ea117f94ce2264bf8389e 52d61227b66d4099b39c8309ab37cb67ee09a405 introduced a regression where platform-specific ffs/fls implementations were defined away. This patch corrects that by using PLATFORM_xxx instead of the name itself. Signed-off-by: Simon Kagstrom <simon.kagstrom@netinsight.net> Acked-by: Kumar Gala <galak@kernel.crashing.org> Acked-by: Stefan Roese <sr@denx.de>
		
			
				
	
	
		
			59 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * bitops.h: Bit string operations on the m68k
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef _M68K_BITOPS_H
 | 
						|
#define _M68K_BITOPS_H
 | 
						|
 | 
						|
#include <linux/config.h>
 | 
						|
#include <asm/byteorder.h>
 | 
						|
 | 
						|
extern void set_bit(int nr, volatile void *addr);
 | 
						|
extern void clear_bit(int nr, volatile void *addr);
 | 
						|
extern void change_bit(int nr, volatile void *addr);
 | 
						|
extern int test_and_set_bit(int nr, volatile void *addr);
 | 
						|
extern int test_and_clear_bit(int nr, volatile void *addr);
 | 
						|
extern int test_and_change_bit(int nr, volatile void *addr);
 | 
						|
 | 
						|
#ifdef __KERNEL__
 | 
						|
 | 
						|
/*
 | 
						|
 * 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)
 | 
						|
{
 | 
						|
	int r = 1;
 | 
						|
 | 
						|
	if (!x)
 | 
						|
		return 0;
 | 
						|
	if (!(x & 0xffff)) {
 | 
						|
		x >>= 16;
 | 
						|
		r += 16;
 | 
						|
	}
 | 
						|
	if (!(x & 0xff)) {
 | 
						|
		x >>= 8;
 | 
						|
		r += 8;
 | 
						|
	}
 | 
						|
	if (!(x & 0xf)) {
 | 
						|
		x >>= 4;
 | 
						|
		r += 4;
 | 
						|
	}
 | 
						|
	if (!(x & 3)) {
 | 
						|
		x >>= 2;
 | 
						|
		r += 2;
 | 
						|
	}
 | 
						|
	if (!(x & 1)) {
 | 
						|
		x >>= 1;
 | 
						|
		r += 1;
 | 
						|
	}
 | 
						|
	return r;
 | 
						|
}
 | 
						|
#define __ffs(x) (ffs(x) - 1)
 | 
						|
#define PLATFORM_FFS
 | 
						|
 | 
						|
#endif /* __KERNEL__ */
 | 
						|
 | 
						|
#endif /* _M68K_BITOPS_H */
 |