mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-02-11 06:59:07 +01:00
Merge pull request #5067 from MerryMage/cycles-offset-too-big
DSP/Jit: Load address of m_cycles_left into register
This commit is contained in:
commit
f65d0c526d
@ -436,7 +436,8 @@ void DSPEmitter::CompileDispatcher()
|
|||||||
m_return_dispatcher = GetCodePtr();
|
m_return_dispatcher = GetCodePtr();
|
||||||
|
|
||||||
// Decrement cyclesLeft
|
// 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);
|
J_CC(CC_A, dispatcherLoop);
|
||||||
|
|
||||||
|
@ -109,12 +109,13 @@ void DSPEmitter::WriteBlockLink(u16 dest)
|
|||||||
{
|
{
|
||||||
m_gpr.FlushRegs();
|
m_gpr.FlushRegs();
|
||||||
// Check if we have enough cycles to execute the next block
|
// 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]));
|
CMP(16, R(ECX), Imm16(m_block_size[m_start_address] + m_block_size[dest]));
|
||||||
FixupBranch notEnoughCycles = J_CC(CC_BE);
|
FixupBranch notEnoughCycles = J_CC(CC_BE);
|
||||||
|
|
||||||
SUB(16, R(ECX), Imm16(m_block_size[m_start_address]));
|
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);
|
JMP(m_block_links[dest], true);
|
||||||
SetJumpTarget(notEnoughCycles);
|
SetJumpTarget(notEnoughCycles);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user