mirror of
https://github.com/RPCS3/rpcs3.git
synced 2024-11-22 18:53:28 +01:00
SPU: fix spu_getllar_tx
Was not executing.
This commit is contained in:
parent
97cd641da9
commit
3bddba0c7a
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user