Add conditional reservation update to STW

This commit is contained in:
isJuhn 2018-06-23 18:44:47 +02:00 committed by Ivan
parent acd83673e9
commit 83f096c435
3 changed files with 22 additions and 2 deletions

View file

@ -4405,7 +4405,15 @@ bool ppu_interpreter::LBZU(ppu_thread& ppu, ppu_opcode_t op)
bool ppu_interpreter::STW(ppu_thread& ppu, ppu_opcode_t op)
{
const u64 addr = op.ra ? ppu.gpr[op.ra] + op.simm16 : op.simm16;
vm::write32(vm::cast(addr, HERE), (u32)ppu.gpr[op.rs]);
const u32 value = (u32)ppu.gpr[op.rs];
vm::write32(vm::cast(addr, HERE), value);
//Insomniac engine v3 & v4 (newer R&C, Fuse, Resitance 3)
if (UNLIKELY(value == 0xAAAAAAAA))
{
vm::reservation_update(addr, 128);
}
return true;
}