> asm volatile ("movl\t(%1),%0\n\t"
> "movl\t(%1),%0"
> : "=r" (temp) : "r" (p));
This is not a bug. You need to tell gcc that operand 0 is earlyclobbered:
asm volatile ("movl\t(%1),%0\n\t"
"movl\t(%1),%0"
: "=&r" (temp) : "r" (p));
Bernd