mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-04 14:01:25 +12:00
SPU: fix spu_getllar_tx
Was not executing.
This commit is contained in:
parent
97cd641da9
commit
3bddba0c7a
2 changed files with 4 additions and 4 deletions
|
@ -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…
Add table
Add a link
Reference in a new issue