Improve vm::range_lock

Not sure how it ever worked
Clear redundant vm::clear_range_lock usage
This commit is contained in:
Nekotekina 2020-10-31 19:17:38 +03:00
parent a42663b09b
commit 78c986b5dd
4 changed files with 48 additions and 18 deletions

View file

@ -2038,7 +2038,7 @@ void spu_thread::do_dma_transfer(spu_thread* _this, const spu_mfc_cmd& args, u8*
}
// Obtain range lock as normal store
vm::range_lock(res, range_lock, eal, size0);
vm::range_lock(nullptr, range_lock, eal, size0);
switch (size0)
{
@ -2111,7 +2111,7 @@ void spu_thread::do_dma_transfer(spu_thread* _this, const spu_mfc_cmd& args, u8*
perf_meter<"DMA_PUT"_u64> perf2;
// TODO: split range-locked stores in cache lines for consistency
auto& res = vm::reservation_acquire(eal, args.size);
auto res = &vm::reservation_acquire(eal, args.size);
switch (u32 size = args.size)
{
@ -2574,9 +2574,6 @@ bool spu_thread::do_putllc(const spu_mfc_cmd& args)
return false;
}
// Wait for range locks to clear
vm::clear_range_locks(addr, 128);
vm::_ref<atomic_t<u32>>(addr) += 0;
auto& super_data = *vm::get_super_ptr<spu_rdata_t>(addr);