Skip to content

Commit

Permalink
Merge pull request #5067 from MerryMage/cycles-offset-too-big
Browse files Browse the repository at this point in the history
DSP/Jit: Load address of m_cycles_left into register
  • Loading branch information
degasus committed Mar 11, 2017
2 parents 71273c0 + dc1a8c4 commit f65d0c5
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 3 deletions.
3 changes: 2 additions & 1 deletion Source/Core/Core/DSP/Jit/DSPEmitter.cpp
Expand Up @@ -436,7 +436,8 @@ void DSPEmitter::CompileDispatcher()
m_return_dispatcher = GetCodePtr();

// Decrement cyclesLeft
SUB(16, M(&m_cycles_left), R(EAX));
MOV(64, R(RCX), ImmPtr(&m_cycles_left));
SUB(16, MatR(RCX), R(EAX));

J_CC(CC_A, dispatcherLoop);

Expand Down
5 changes: 3 additions & 2 deletions Source/Core/Core/DSP/Jit/DSPJitBranch.cpp
Expand Up @@ -109,12 +109,13 @@ void DSPEmitter::WriteBlockLink(u16 dest)
{
m_gpr.FlushRegs();
// Check if we have enough cycles to execute the next block
MOV(16, R(ECX), M(&m_cycles_left));
MOV(64, R(RAX), ImmPtr(&m_cycles_left));
MOV(16, R(ECX), MatR(RAX));
CMP(16, R(ECX), Imm16(m_block_size[m_start_address] + m_block_size[dest]));
FixupBranch notEnoughCycles = J_CC(CC_BE);

SUB(16, R(ECX), Imm16(m_block_size[m_start_address]));
MOV(16, M(&m_cycles_left), R(ECX));
MOV(16, MatR(RAX), R(ECX));
JMP(m_block_links[dest], true);
SetJumpTarget(notEnoughCycles);
}
Expand Down

0 comments on commit f65d0c5

Please sign in to comment.