]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
The guest-state effect declaration for x86 'fldenv' has been wrong for
authorJulian Seward <jseward@acm.org>
Mon, 13 Jun 2005 12:33:36 +0000 (12:33 +0000)
committerJulian Seward <jseward@acm.org>
Mon, 13 Jun 2005 12:33:36 +0000 (12:33 +0000)
a long time -- it says fldenv writes the FP regs, which isn't true.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1207

VEX/priv/guest-x86/toIR.c

index 9f2924ff18041b60a8154ddfd6f0c3011a527d4b..ab7de82aa63bd048811e43979ec41e91f19f2c83 100644 (file)
@@ -3749,28 +3749,24 @@ UInt dis_FPU ( Bool* decode_ok, UChar sorb, UInt delta )
                d->mSize = 28;
 
                /* declare we're writing guest state */
-               d->nFxState = 5;
+               d->nFxState = 4;
 
                d->fxState[0].fx     = Ifx_Write;
                d->fxState[0].offset = OFFB_FTOP;
                d->fxState[0].size   = sizeof(UInt);
 
                d->fxState[1].fx     = Ifx_Write;
-               d->fxState[1].offset = OFFB_FPREGS;
-               d->fxState[1].size   = 8 * sizeof(ULong);
+               d->fxState[1].offset = OFFB_FPTAGS;
+               d->fxState[1].size   = 8 * sizeof(UChar);
 
                d->fxState[2].fx     = Ifx_Write;
-               d->fxState[2].offset = OFFB_FPTAGS;
-               d->fxState[2].size   = 8 * sizeof(UChar);
+               d->fxState[2].offset = OFFB_FPROUND;
+               d->fxState[2].size   = sizeof(UInt);
 
                d->fxState[3].fx     = Ifx_Write;
-               d->fxState[3].offset = OFFB_FPROUND;
+               d->fxState[3].offset = OFFB_FC3210;
                d->fxState[3].size   = sizeof(UInt);
 
-               d->fxState[4].fx     = Ifx_Write;
-               d->fxState[4].offset = OFFB_FC3210;
-               d->fxState[4].size   = sizeof(UInt);
-
                stmt( IRStmt_Dirty(d) );
 
                /* ew contains any emulation warning we may need to