bug in arch/ppc/kernel/misc.S: __ashrdi3?
Andreas Schwab
schwab at suse.de
Sun Jul 17 04:02:18 EST 2005
Benjamin Herrenschmidt <benh at kernel.crashing.org> writes:
> On Fri, 2005-07-15 at 18:01 +0200, Frank van Maarseveen wrote:
>> I don't really grok the code but an operand seems to be missing and the
>> assembler makes something out of it I don't trust:
>>
>> _GLOBAL(__ashrdi3)
>> ...
>> rlwinm r8,r7,0,32 # t3 = (count < 32) ? 32 : 0
>
> This is equivalent to r8 = r7 & 32. It will definitely not do what the
> comment says though. If (count < 64), however, it will do something
> like r8 = (r7 < 32) ? 0 : 32. Paul, maybe we should dbl check what's
> going in there ?
r7 is count + 32, and ((count + 32) & 32) is equivalent to the expression
above if count < 64.
Andreas.
--
Andreas Schwab, SuSE Labs, schwab at suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."
More information about the Linuxppc-dev
mailing list