ppc: remove bit operation headers file conflict
Removed the ppc bit operation functions and definitions in the ppc file asm/bitops.h since these are already defined in the asm-generic header files. Moved ffs64 definition to the mpc85xx header files because the function requires the inclusion of linux/log2.h which also includes asm/bitops.h. The conflict was noted when UBIFS was enabled in barebox. Signed-off-by: Renaud Barbier <renaud.barbier@ge.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
parent
278850a442
commit
b99e853aff
|
@ -24,7 +24,7 @@
|
|||
#include <common.h>
|
||||
#include <asm/processor.h>
|
||||
#include <asm/config.h>
|
||||
#include <asm/bitops.h>
|
||||
#include <linux/log2.h>
|
||||
#include <mach/mmu.h>
|
||||
|
||||
void e500_invalidate_tlb(u8 tlb)
|
||||
|
|
|
@ -6,13 +6,7 @@
|
|||
#define _PPC_BITOPS_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);
|
||||
#include <asm-generic/bitops/ops.h>
|
||||
|
||||
/*
|
||||
* Arguably these bit operations don't imply any memory barrier or
|
||||
|
@ -143,13 +137,6 @@ extern __inline__ int test_and_change_bit(int nr, volatile void *addr)
|
|||
}
|
||||
#endif /* __INLINE_BITOPS */
|
||||
|
||||
extern __inline__ int test_bit(int nr, __const__ volatile void *addr)
|
||||
{
|
||||
__const__ unsigned int *p = (__const__ unsigned int *) addr;
|
||||
|
||||
return ((p[nr >> 5] >> (nr & 0x1f)) & 1) != 0;
|
||||
}
|
||||
|
||||
/* Return the bit position of the most significant 1 bit in a word */
|
||||
extern __inline__ int __ilog2(unsigned int x)
|
||||
{
|
||||
|
@ -178,36 +165,6 @@ static inline int fls(unsigned int x)
|
|||
return 32 - lz;
|
||||
}
|
||||
|
||||
/*
|
||||
* fls64 - find last set bit in a 64-bit word
|
||||
* @x: the word to search
|
||||
*
|
||||
* This is defined in a similar way as the libc and compiler builtin
|
||||
* ffsll, but returns the position of the most significant set bit.
|
||||
*
|
||||
* fls64(value) returns 0 if value is 0 or the position of the last
|
||||
* set bit if value is nonzero. The last (most significant) bit is
|
||||
* at position 64.
|
||||
*/
|
||||
|
||||
static inline int fls64(__u64 x)
|
||||
{
|
||||
__u32 h = x >> 32;
|
||||
if (h)
|
||||
return fls(h) + 32;
|
||||
return fls(x);
|
||||
}
|
||||
|
||||
static inline int __ilog2_u64(u64 n)
|
||||
{
|
||||
return fls64(n) - 1;
|
||||
}
|
||||
|
||||
static inline int ffs64(u64 x)
|
||||
{
|
||||
return __ilog2_u64(x & -x) + 1ull;
|
||||
}
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
/*
|
||||
|
@ -220,6 +177,7 @@ extern __inline__ int ffs(int x)
|
|||
return __ilog2(x & -x) + 1;
|
||||
}
|
||||
|
||||
#include <asm-generic/bitops/fls64.h>
|
||||
#include <asm-generic/bitops/hweight.h>
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
#include <common.h>
|
||||
#include <asm/config.h>
|
||||
#include <asm/fsl_law.h>
|
||||
#include <mach/ffs64.h>
|
||||
|
||||
#define FSL_HW_NUM_LAWS FSL_NUM_LAWS
|
||||
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
/*
|
||||
* Copyright 2013 GE Intelligent Platforms, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
*/
|
||||
#include <linux/log2.h>
|
||||
|
||||
static inline int ffs64(u64 x)
|
||||
{
|
||||
return __ilog2_u64(x & -x) + 1ull;
|
||||
}
|
Loading…
Reference in New Issue