Subject: Re: inline assembly & r0 SOS

From: Kevin Diggs <[email-masked]>
Date: Tue, 05 Aug 2008 19:31:43 -0700

Jeremy Kerr wrote:
> Hi Kevin,
> 
> 
>>         /*
>>          * Turn r3 (range) into a rotate count for the selected
>>range. * 0 -> 23, 1 -> 31
>>          */
>>         __asm__ __volatile__ (  "slwi %0,%0,3\n"
>>                                 "addi %0,%0,23\n"
>>                                 "rlwnm %0,%1,%0,30,31\n":
>>                 "=r"(ret):
>>                 "r"(config),"0"(range)
>>         );
> 
> 
> Wouldn't this be much simpler in plain C?
> 
I just knew someone was gonna try to rain on my rlwnm'in fun parade! 
Wonder if the C code can be made to compile down to 3 instructions?

> However, if you really do need to do this in inline asm, you can use 
> the "b" modifier rather than "r" to avoid using r0.
> 
Oh cool! Thanks! You to Ben!

> Cheers,
> Jeremy

kevin