I submit a patch to fix bugs 661696 and 1248376. This is the fourth version of this patch. As mentioned in a previous email, the patch implements, for TCG, the specifications provided in Intel and AMD programmer's manuals regarding the x87 exception pointers. That is, when executing instructions fstenv/fnstenv, fsave and fxsave the values for the instruction pointer, data pointer and opcode of the last non-control x87 instruction executed, are correctly saved to the specified memory address. When executing instructions fldenv, frstor and fxrstor the values that are going to be considered the instruction pointer, data pointer and opcode of the last non-control x87 instruction are obtained from the specified memory address. I have added an option in the configure script to enable and disable this development (option tcg-exception-pointers). After testing, I found no performance change between having this option activated and having it disabled.
Best regards, Jaume configure | 10 ++ linux-user/signal.c | 4 +- target-i386/cpu.h | 29 ++- target-i386/fpu_helper.c | 238 ++++++++++++++++++++----- target-i386/machine.c | 11 +- target-i386/translate.c | 455 ++++++++++++++++++++++++++++++++++------------- tests/tcg/test-i386.c | 75 +++++++- 7 files changed, 645 insertions(+), 177 deletions(-) -- 2.1.0