On 19/08/2016 22:23, Segher Boessenkool wrote: > Completely off-topic, but... > > On Fri, Aug 19, 2016 at 07:21:44PM +0200, Laurent Dufour wrote: >> asm __volatile__( >> "li 3,1 ;" >> "tbegin. ;" >> "beq 1f ;" >> "li 3,0 ;" >> "tsuspend. ;" >> "1: ;" >> "std 3, %[ret] ;" >> : [ret]"=m"(ret) >> : >> : "memory", "3"); > > This asm clobbers CR0, so you should add a "cc" or "cr0" clobber here. > When you use "m" you need "%X" as well, i.e. > std%X[ret] 3,%[ret] > > (Nowadays you only need "%U" if you use "m<>", but you still need "%X". > Come to think of it, the kernel supports really old GCC, right? So you > need "std%U[ret]%X[ret] 3,%[ret]").
Thanks Segher for these advices, I'll keep them in mind.