Refactor to safely write 64 bits (accounting for page fault exceptions)
This commit is contained in:
parent
a87fba744b
commit
337173963f
10
src/cpu.js
10
src/cpu.js
|
@ -1522,6 +1522,13 @@ CPU.prototype.safe_write32 = function(addr, value)
|
|||
}
|
||||
};
|
||||
|
||||
CPU.prototype.safe_write64 = function(addr, low, high)
|
||||
{
|
||||
this.writable_or_pagefault(addr, 8);
|
||||
this.safe_write32(addr, low);
|
||||
this.safe_write32(addr + 4 | 0, high);
|
||||
};
|
||||
|
||||
// read 2 or 4 byte from ip, depending on address size attribute
|
||||
CPU.prototype.read_moffs = function()
|
||||
{
|
||||
|
@ -3296,8 +3303,7 @@ CPU.prototype.set_xmm_mem64s = function(data) {
|
|||
|
||||
if(this.modrm_byte < 0xC0) {
|
||||
var addr = this.modrm_resolve(this.modrm_byte);
|
||||
this.safe_write32(addr, data.lo);
|
||||
this.safe_write32(addr + 4 | 0, data.hi);
|
||||
this.safe_write64(addr, data.lo, data.hi);
|
||||
} else {
|
||||
this.reg_mmxs[2 * (this.modrm_byte & 7)] = data.lo;
|
||||
this.reg_mmxs[2 * (this.modrm_byte & 7) + 1] = data.hi;
|
||||
|
|
Loading…
Reference in a new issue