On Wed, Nov 08, 2000 at 06:21:54PM +0000, Alan Cox wrote:
> > >           asm volatile("rep ; nop");
> > > 
> > > (there's not much a "rep nop" _can_ do, after all - the most likely CPU
> > > extension would be to raise an "Illegal Opcode" fault).
> > 
> > Just for the curious, this works on Athlons. :)
> 
> What state does it leave the condition codes ?  That matters. 
> 
> Take for example
> 
> if (!oldval)
>                 asm volatile(
>                         "2:"
>                         "cmpl $-1, %0;"
>                         "rep; nop;"
>                         "je 2b;"
>                               : :"m" (current->need_resched));
> }
> 
> When running SMP with poll_idle enabled. I can't see it changing condition
> codes on an athlon but..

Yup, that works as well.  This example:

        int     foo = -1;
        asm volatile(
                "2:"
                "cmpl $-1, %0;"
                "rep; nop;"
                "je 2b;"
                : :"m" (foo));

loops forever.  If you set 'foo = 0' it drops out.


BAPper
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/

Reply via email to