On Tue, Jan 15, 2008 at 12:27:19PM +0100, Florian Lohoff wrote:
> Simple testcase for me is:

now even simpler:

----------------------------------------------------------------------
void spin(void *a0)
{
        while (1) {
                asm volatile(
                "    .set mips3       \n"
                "    sync             \n"
                "1:  ll $5, 0($4)     \n"
                "    sc $3, 0($4)     \n"
                "    beqz $3, 1b      \n"
                "    .word 0x7c03e83b \n" /* rdhwr */
                "    lw $3, 0($4)     \n"
                "    nop              \n"
                );
        }
}

int main()
{
        int a;

        spin(&a);
}
----------------------------------------------------------------------

this kills my IP28 after a few seconds. If I drop rdhwr or sync the
machine hasn't locked up after running for several minutes. Looks
like we are hiting a strange condition.

This sort of code could be found in glibc 2.7 all over the place...

Thomas.

PS: Using rdhwr_noopt doesn't make a difference...

-- 
Crap can work. Given enough thrust pigs will fly, but it's not necessary a
good idea.                                                [ RFC1925, 2.3 ]


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to