Re: udelay() on alpha

From: Richard Henderson (rth@twiddle.net)
Date: Thu Mar 02 2000 - 16:06:48 EST


On Thu, Mar 02, 2000 at 11:29:55PM +0300, Ivan Kokshaysky wrote:
> + " rpcc %1\n"
> + "1: rpcc %0\n"
> + " subl %0,%1,%0\n"
> + " zapnot %0,15,%0\n"
> + " cmpult %0,%2,%0\n"
> + " bne %0,1b"
> + : "=&r" (tmp), "=&r" (cc) : "r"(loops));

Interesting. Better written as

        rpcc %1
1: rpcc %0
        subl %0,%1,%0
        cmpult %0,%2,%0
        bne %0,1b
        : "=&r" (tmp), "=&r" (cc) : "r"((int)loops));

Or with the (int) moved back to the __delay prototype.
With both arguments to cmpult properly sign extended
we get proper results without the extra zap instruction.

r~

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



This archive was generated by hypermail 2b29 : Tue Mar 07 2000 - 21:00:13 EST