--- linux-source-2.6.37-rc7/drivers/char/hw_random/via-rng.c.hxu1 2011-01-05 11:32:12.508274625 +0100 +++ linux-source-2.6.37-rc7/drivers/char/hw_random/via-rng.c 2011-01-05 12:45:43.459208713 +0100 @@ -80,7 +80,9 @@ static inline u32 xstore(u32 *addr, u32 ts_state = irq_ts_save(); - asm(".byte 0x0F,0xA7,0xC0 /* xstore %%edi (addr=%0) */" + asm("pushl %%edi\n" + ".byte 0x0F,0xA7,0xC0 /* xstore %%edi (addr=%0) */\n" + "popl %%edi\n" :"=m"(*addr), "=a"(eax_out) :"D"(addr), "d"(edx_in));