From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Morton Subject: Re: link error : 2.6.21-rc6-mm1 for s390 Date: Tue, 10 Apr 2007 18:47:38 -0700 Message-ID: <20070410184738.dc1c5943.akpm@linux-foundation.org> References: <20070411005616.GG15262@Krystal> <20070410182937.8169c672.akpm@linux-foundation.org> <20070410.183629.57444787.davem@davemloft.net> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: mathieu.desnoyers@polymtl.ca, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, shemminger@linux-foundation.org, heiko.carstens@de.ibm.com To: David Miller Return-path: In-Reply-To: <20070410.183629.57444787.davem@davemloft.net> Sender: linux-kernel-owner@vger.kernel.org List-Id: netdev.vger.kernel.org On Tue, 10 Apr 2007 18:36:29 -0700 (PDT) David Miller wrote: > From: Andrew Morton > Date: Tue, 10 Apr 2007 18:29:37 -0700 > > > git-net.patch implements generic lib/div64.c, but s390 also has a > > private one. Presumably the appropriate fix is to remove s390's > > private implementation within davem's tree. > > The s390 version seems to be optimized in assembler for that > processor, therefore we should probably instead elide the > generic version on s390. We're sure that it has the same API? > How about something like this? > > diff --git a/include/asm-s390/div64.h b/include/asm-s390/div64.h > index 6cd978c..21aea15 100644 > --- a/include/asm-s390/div64.h > +++ b/include/asm-s390/div64.h > @@ -1 +1,2 @@ > #include > +#define HAVE_ARCH_DIV64_32 > diff --git a/lib/div64.c b/lib/div64.c > index 74f0c8c..5b480fa 100644 > --- a/lib/div64.c > +++ b/lib/div64.c > @@ -23,6 +23,8 @@ > /* Not needed on 64bit architectures */ > #if BITS_PER_LONG == 32 > > +#ifndef HAVE_ARCH_DIV64_32 > + > uint32_t __div64_32(uint64_t *n, uint32_t base) > { > uint64_t rem = *n; > @@ -58,6 +60,8 @@ uint32_t __div64_32(uint64_t *n, uint32_t base) > > EXPORT_SYMBOL(__div64_32); > > +#endif /* !(HAVE_ARCH_DIV64_32) */ > + > /* 64bit divisor, dividend and result. dynamic precision */ > uint64_t div64_64(uint64_t dividend, uint64_t divisor) > { attribute(weak) would give a nicer result? We'd also need to remove s390's EXPORT_SYMBOL(__div64_32), so s390 ends up using lib/div64.c's EXPORT_SYMBOL().