target-i386: fix cmpxchg instruction emulation
commitf7e80adf3cc4b99b8230e6474d0518363773915f
authorAndreas Gustafsson <gson@gson.org>
Sun, 11 Dec 2011 20:46:32 +0000 (12 00:46 +0400)
committermalc <av1474@comtv.ru>
Sun, 11 Dec 2011 20:46:32 +0000 (12 00:46 +0400)
treebfc311ea3ac0a4d42f68e00833197fbb22c3d6d4
parent217bfb445b54db618a30f3a39170bebd9fd9dbf2
target-i386: fix cmpxchg instruction emulation

When the i386 cmpxchg instruction is executed with a memory operand
and the comparison result is "unequal", do the memory write before
changing the accumulator instead of the other way around, because
otherwise the new accumulator value will incorrectly be used in the
comparison when the instruction is restarted after a page fault.

This bug was originally reported on 2010-04-25 as
https://bugs.launchpad.net/qemu/+bug/569760

Signed-off-by: Andreas Gustafsson <gson@gson.org>
target-i386/translate.c