lkml.org 
[lkml]   [2003]   [Jul]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: do_div64 generic
    Bernardo Innocenti wrote:
    > On Wednesday 16 July 2003 20:33, Bernardo Innocenti wrote:
    >
    >
    >>>>Bernardo, can you do the patch please?
    >>
    >> I would be glad to do it once the discussion has settled, whatever
    >>the final decision will be. Just don't make me do it twice, please ;-)
    >
    >
    > So far nobody have commented and the problem is still unaddressed.
    > What shall I do? As far as I can tell, our options are:
    >
    > 1) add surrogates of div_long_long_rem() in asm-generic/div64.h and in
    > all other archs that have their own optimized versions of do_div().
    > I already have a patch for this, but it has been tested only on i386
    > and m68knommu.
    >
    > 2) replace all uses of div_long_long_rem() (I see onlt 4 of them in
    > 2.6.0-test1) with do_div(). This is slightly less efficient, but
    > easier to maintain in the long term.

    Actually, the macro to do this is already there. Is there a real
    reason not to use it. The using code sure looks cleaner with it.
    >
    > I shall note that I _hate_ fixing compiler problems in the kernel. The
    > real fix I'm dreaming involves adding specialized patterns in GCC to
    > generate an optimal instruction sequence for all these cases.

    I would love to get to the instruction via normal C.
    >
    > Of course we should realize that we need to support older versions of
    > GCC and, even if we didn't, we can't wait for the next GCC release :-)
    >
    > So, if we're going to live with do_div(), I think we could as well
    > have a set of macros for the most frequent cases. I've just spotted
    > another candidate in kernel/posix-timers.c: mpy_l_X_l_ll().

    The mpy_l_X_l_ll() is there because it is so easy to get it wrong. It
    is standard C (well gcc) but if you don't get the casting just right
    it will throw away the high bits.
    >
    > This is not a third option for fixing our immediate problem: it's
    > just an idea for future improvement.
    >
    > Andrew, George, please comment.

    Is there any need to change any thing at all? Or maybe a comment
    somewhere on what direction we would like things to go.

    When I look at the div code on the risc machines I begin to really
    understand why gcc avoids the div instruction so actively. (It
    optimizes away almost all divides by constants.)
    >

    --
    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

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

    \
     
     \ /
      Last update: 2005-03-22 13:46    [W:0.023 / U:30.336 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site