1
0
mirror of https://github.com/RPCS3/rpcs3.git synced 2024-11-23 03:02:53 +01:00

SPU: fix spu_getllar_tx

Was not executing.
This commit is contained in:
Nekotekina 2020-10-14 02:53:29 +03:00
parent 97cd641da9
commit 3bddba0c7a
2 changed files with 4 additions and 4 deletions

View File

@ -1186,7 +1186,7 @@ static T ppu_load_acquire_reservation(ppu_thread& ppu, u32 addr)
if (ppu.rtime & 127)
{
// Try to use TSX to obtain data atomically
if (!g_use_rtm || !spu_getllar_tx(addr & -128, ppu.rdata, &ppu, ppu.rtime))
if (!g_use_rtm || !spu_getllar_tx(addr & -128, ppu.rdata, &ppu, ppu.rtime & -128))
{
continue;
}

View File

@ -833,7 +833,7 @@ const extern auto spu_getllar_tx = build_function_asm<u32(*)(u32 raddr, void* rd
c.bt(x86::dword_ptr(args[2], ::offset32(&cpu_thread::state)), static_cast<u32>(cpu_flag::pause));
c.jc(fall);
c.mov(x86::rax, x86::qword_ptr(x86::rbx));
c.and_(x86::rax, -128);
c.and_(x86::rax, ~vm::rsrv_shared_mask);
c.cmp(x86::rax, args[3]);
c.jne(fall);
c.xbegin(tx0);
@ -2472,7 +2472,7 @@ bool spu_thread::process_mfc_cmd()
if (ntime & 127)
{
// Try to use TSX to obtain data atomically
if (!g_use_rtm || !spu_getllar_tx(addr, rdata, this, ntime))
if (!g_use_rtm || !spu_getllar_tx(addr, rdata, this, ntime & -128))
{
// See previous ntime check.
continue;
@ -2497,7 +2497,7 @@ bool spu_thread::process_mfc_cmd()
continue;
}
if (i >= 40) [[unlikely]]
if (g_use_rtm && i >= 15) [[unlikely]]
{
spu_log.warning("GETLLAR took too long: %u", i);
}