Fix restartability of POP [mem] when a page fault occurs
This commit is contained in:
parent
645241b634
commit
823c9062ed
1 changed files with 9 additions and 0 deletions
|
|
@ -2361,6 +2361,13 @@ X86.opPOPmw = function POPmw()
|
||||||
* Like other MOV operations, the destination does not need to be read, just written.
|
* Like other MOV operations, the destination does not need to be read, just written.
|
||||||
*/
|
*/
|
||||||
this.opFlags |= X86.OPFLAG.NOREAD;
|
this.opFlags |= X86.OPFLAG.NOREAD;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If the word we're about to pop FROM the stack gets popped INTO a not-present page, this
|
||||||
|
* instruction will not be restartable unless we snapshot regLSP first.
|
||||||
|
*/
|
||||||
|
this.opLSP = this.regLSP;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A "clever" instruction like this:
|
* A "clever" instruction like this:
|
||||||
*
|
*
|
||||||
|
|
@ -2376,7 +2383,9 @@ X86.opPOPmw = function POPmw()
|
||||||
* BEFORE the push, which occurs through our normal ModRM processing.
|
* BEFORE the push, which occurs through our normal ModRM processing.
|
||||||
*/
|
*/
|
||||||
this.regXX = this.popWord();
|
this.regXX = this.popWord();
|
||||||
|
|
||||||
this.aOpModGrpWord[this.getIPByte()].call(this, X86.aOpGrpPOPw, X86.fnSRCxx);
|
this.aOpModGrpWord[this.getIPByte()].call(this, X86.aOpGrpPOPw, X86.fnSRCxx);
|
||||||
|
this.opLSP = X86.ADDR_INVALID;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue