SPU: improve accurate DMA

Remove vm::reservation_lock from it.
Use lock bits to prevent memory clobbering in GETLLAR.
Improve u128 for MSVC since it's used for bitlocking.
Improve 128 bit atomics for the same reason.
Improve vm::reservation_op and friends.
This commit is contained in:
Nekotekina 2020-10-27 21:34:08 +03:00
parent c50233cc92
commit c491b73f3a
7 changed files with 264 additions and 33 deletions

View file

@ -1199,7 +1199,7 @@ static T ppu_load_acquire_reservation(ppu_thread& ppu, u32 addr)
verify(HERE), cpu_thread::if_suspended<-1>(&ppu, [&]()
{
// Guaranteed success
ppu.rtime = vm::reservation_acquire(addr, sizeof(T)) & -128;
ppu.rtime = vm::reservation_acquire(addr, sizeof(T));
mov_rdata(ppu.rdata, *vm::get_super_ptr<spu_rdata_t>(addr & -128));
});