Re: [2.6.30-rc8] gcc 3.3 : __udivdi3 undefined.

From: Andrew Morton
Date: Fri Jun 05 2009 - 13:25:11 EST


On Fri, 5 Jun 2009 11:37:25 +0200 Andreas Herrmann <andreas.herrmann3@xxxxxxx> wrote:

> On Fri, Jun 05, 2009 at 12:03:10AM -0700, Andrew Morton wrote:
> > On Fri, 05 Jun 2009 15:51:07 +0900 Tetsuo Handa <penguin-kernel@xxxxxxxxxxxxxxxxxxx> wrote:
> >
> > > >but I wonder why all those things are u64. They all hold virtual
> > > >addresses, don't they? The code doesn't test highmem. So shouldn't
> > > >these all be unsigned longs?
> > > memtest() in linux-2.6.29.4/arch/x86/mm/memtest.c is using "unsigned long".
> > > 2.6.30 changed to use "u64" by some reason.
> >
> > No reason, really. "consistency".
>
> Yes, it was done that way for consistency.
> See this thread
> http://lkml.org/lkml/2009/2/13/166
>
> > It made the code slower,
>
> not measurable
>
> > larger
>
> slightly on 32-bit
>
> > and, err, not compile.
>
> Mea culpa.
>
> Overlooked the 64-bit division.
> Did test this with 4.[23].x compilers on 32-bit which didn't complain ...
>
> I assume you are going to send your do_div() fix upstream?
>

I deleted it, for it is lame.

A better fix is to use the correct types.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/