Re: [PATCH] unicore32: fix build error for find bitops
From: Akinobu Mita
Date: Thu Jun 09 2011 - 10:05:20 EST
2011/6/9 Akinobu Mita <akinobu.mita@xxxxxxxxx>:
> 2011/6/9 GuanXuetao <gxt@xxxxxxxxxxxxxxx>:
>> From: Guan Xuetao <gxt@xxxxxxxxxxxxxxx>
>>
>> Remove the __uc32_ prefix in find bitops functions.
>> see commit <19de85ef574c3a2182e3ccad9581805052f14946>
>> bitops: add #ifndef for each of find bitops
>>
>> Signed-off-by: Guan Xuetao <gxt@xxxxxxxxxxxxxxx>
>> Cc: Akinobu Mita <akinobu.mita@xxxxxxxxx>
>> ---
>> arch/unicore32/include/asm/bitops.h | 6 ------
>> arch/unicore32/kernel/ksyms.c | 4 ++--
>> arch/unicore32/lib/findbit.S | 14 ++++++++------
>> 3 files changed, 10 insertions(+), 14 deletions(-)
>>
>> diff --git a/arch/unicore32/include/asm/bitops.h b/arch/unicore32/include/asm/bitops.h
>> index 1628a63..a9653f0 100644
>> --- a/arch/unicore32/include/asm/bitops.h
>> +++ b/arch/unicore32/include/asm/bitops.h
>> @@ -13,12 +13,6 @@
>> #ifndef __UNICORE_BITOPS_H__
>> #define __UNICORE_BITOPS_H__
>>
>> -#define find_next_bit __uc32_find_next_bit
>> -#define find_next_zero_bit __uc32_find_next_zero_bit
>> -
>> -#define find_first_bit __uc32_find_first_bit
>> -#define find_first_zero_bit __uc32_find_first_zero_bit
>> -
>
> Is this patch really fix the build error?
>
> If these find_*_bit macros are removed, vmlinux will have multiple
> definisions of find_*_bit. Because lib/find_next_bit.c is built
> unconditionally after the commit 63e424c84429903c92a0f1e9654c31ccaf6694d0
> ("arch: remove CONFIG_GENERIC_FIND_{NEXT_BIT,BIT_LE,LAST_BIT}".
The attached patch hopefully fix the build error but it is untested
because I can't find crosstool for unicore32. So could you apply
this patch on top of your patch and check whether it fixes?
From 133331e9314388e78619ed77cc62f6ad04233299 Mon Sep 17 00:00:00 2001
From: Akinobu Mita <akinobu.mita@xxxxxxxxx>
Date: Thu, 9 Jun 2011 22:28:37 +0900
Subject: [PATCH] unicore32: fix build error for find bitops
Signed-off-by: Akinobu Mita <akinobu.mita@xxxxxxxxx>
---
arch/unicore32/include/asm/bitops.h | 17 +++++++++++++++++
1 files changed, 17 insertions(+), 0 deletions(-)
diff --git a/arch/unicore32/include/asm/bitops.h b/arch/unicore32/include/asm/bitops.h
index a9653f0..fb8a29c 100644
--- a/arch/unicore32/include/asm/bitops.h
+++ b/arch/unicore32/include/asm/bitops.h
@@ -17,6 +17,7 @@
#define _ASM_GENERIC_BITOPS___FLS_H_
#define _ASM_GENERIC_BITOPS_FFS_H_
#define _ASM_GENERIC_BITOPS___FFS_H_
+#define _ASM_GENERIC_BITOPS_FIND_H_
/*
* On UNICORE, those functions can be implemented around
* the cntlz instruction for much better code efficiency.
@@ -36,6 +37,22 @@ static inline int fls(int x)
#define ffs(x) ({ unsigned long __t = (x); fls(__t & -__t); })
#define __ffs(x) (ffs(x) - 1)
+extern unsigned long find_next_bit(const unsigned long *addr, unsigned long
+ size, unsigned long offset);
+#define find_next_bit find_next_bit
+
+extern unsigned long find_next_zero_bit(const unsigned long *addr, unsigned
+ long size, unsigned long offset);
+#define find_next_zero_bit find_next_zero_bit
+
+extern unsigned long find_first_bit(const unsigned long *addr,
+ unsigned long size);
+#define find_first_bit find_first_bit
+
+extern unsigned long find_first_zero_bit(const unsigned long *addr,
+ unsigned long size);
+#define find_first_zero_bit find_first_zero_bit
+
#include <asm-generic/bitops.h>
#endif /* __UNICORE_BITOPS_H__ */
--
1.7.4.4