diff options
| author | Markus Wick <degasus@users.noreply.github.com> | 2017-03-12 00:33:55 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-03-12 00:33:55 +0100 |
| commit | f65d0c526d240b954749bd6db977dfe8a0dc7d33 (patch) | |
| tree | b1d811b6e11927c2e8a4a46f601090ff03a9929b /Source | |
| parent | 71273c05a95c33b48937c27b63f3cb3074df4b68 (diff) | |
| parent | dc1a8c46e98da079b04754505cb6c41b4bebdee2 (diff) | |
Merge pull request #5067 from MerryMage/cycles-offset-too-big
DSP/Jit: Load address of m_cycles_left into register
Diffstat (limited to 'Source')
| -rw-r--r-- | Source/Core/Core/DSP/Jit/DSPEmitter.cpp | 3 | ||||
| -rw-r--r-- | Source/Core/Core/DSP/Jit/DSPJitBranch.cpp | 5 |
2 files changed, 5 insertions, 3 deletions
diff --git a/Source/Core/Core/DSP/Jit/DSPEmitter.cpp b/Source/Core/Core/DSP/Jit/DSPEmitter.cpp index 5cbf529c51..13a7f6f0ba 100644 --- a/Source/Core/Core/DSP/Jit/DSPEmitter.cpp +++ b/Source/Core/Core/DSP/Jit/DSPEmitter.cpp @@ -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); diff --git a/Source/Core/Core/DSP/Jit/DSPJitBranch.cpp b/Source/Core/Core/DSP/Jit/DSPJitBranch.cpp index 3094b8b9f0..287971c605 100644 --- a/Source/Core/Core/DSP/Jit/DSPJitBranch.cpp +++ b/Source/Core/Core/DSP/Jit/DSPJitBranch.cpp @@ -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); } |
