Hi,

If I have:

inline unsigned int get_PLL_range(unsigned int range, unsigned int
        config)
{
unsigned int ret;

        /*
         * 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)
        );

        return ret;
}

in a header and the resultant code generated is:

.L58:
        li 0,1   # ratio,
        mr 29,0  # ret, ratio
#APP
        slwi 29,29,3     # ret
addi 29,29,21    # ret
rlwnm 29,28,29,27,31     # ret, ret

        slwi 0,0,3       # ret
addi 0,0,23      # ret
rlwnm 0,28,0,30,31       # ret, ret

#NO_APP

thats bad right? Because the "addi 0, 0, 23" will not work as expected because of the "special property" of r0. FYI: The first three lines after the "#APP" are from a similar function get_PLL_ratio().

        Is there a way to blacklist r0?

kevin
_______________________________________________
Linuxppc-dev mailing list
[email protected]
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Reply via email to