Re: [PATCHSET][2.6-test4][0/6]Support for HPET based timer - Take 2

George Anzinger
2003-09-05T22:28:51Z

Pallipadi, Venkatesh wrote:
>
>
>>-----Original Message-----
>>From: Andrew Morton [mailto:akpm@osdl.org]
>>
>>We seem to keep on proliferating home-grown x86 64-bit math functions.
>>
>>Do you really need these? Is it possible to use do_div() and
>>the C 64x64
>>`*' operator instead?
>>
>
>
>
> We can change these handcoded 64 bit divs to do_div, with just an
> additional data copy

We already have this in .../include/asm-i386/div64.h. Check usage in
.../posix-timers.c to cover archs that have not yet included it in
there div64.h.

> (as do_div changes dividend in place). But, changing mul into 64x64 '*'
> may be tricky.
> Gcc seem to generate a combination of mul, 2imul and add, where as we
> are happy with
> using only one mull here.

You just need to do the right casting. It should like
u64=u32*(u64)u32 as in .../kernel/posix-timers.c. This could also be
signed with the same results. If you really need to do a u64*u32, it
will do that as well but takes two mpys. In this case you will need
to do it unsigned to eliminate the third mpy.
>
>

--
George Anzinger george@mvista.com
High-res-timers: http://sourceforge.net/projects/high-res-timers/
Preemption patch: http://www.kernel.org/pub/linux/kernel/people/rml