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