Added OPTYPE_LOADPS and OPTYPE_STOREPS instruction types to the PPC table.

Updated ARAM DMA and FIFO write exception checking to uses these types.

Conflicts:
	Source/Core/Core/PowerPC/Interpreter/Interpreter_Tables.cpp
	Source/Core/Core/PowerPC/PPCTables.h
This commit is contained in:
skidau
2014-09-07 15:46:29 +10:00
parent 0f256715e0
commit 945d431171
4 changed files with 11 additions and 7 deletions

View File

@ -448,7 +448,7 @@ static void UpdateInterrupts()
if (jit && PC != 0 && (jit->js.dspARAMAddresses.find(PC)) == (jit->js.dspARAMAddresses.end()) && (g_dspState.DSPControl.ARAM & g_dspState.DSPControl.ARAM_mask))
{
int type = GetOpInfo(Memory::ReadUnchecked_U32(PC))->type;
if (type == OPTYPE_STORE || type == OPTYPE_STOREFP || (type == OPTYPE_PS && GetOpInfo(Memory::ReadUnchecked_U32(PC))->opname == "psq_st"))
if (type == OPTYPE_STORE || type == OPTYPE_STOREFP || (type == OPTYPE_STOREPS))
{
jit->js.dspARAMAddresses.insert(PC);
@ -534,7 +534,8 @@ static void Do_ARAM_DMA()
g_dspState.DSPControl.DMAState = 1;
CoreTiming::ScheduleEvent_Threadsafe(0, et_CompleteARAM);
// Force an early exception check on large transfers. Fixes RE2 audio.
// Force an early exception check on large transfers (transfers longer than 250+ ticks).
// The shorter transfers are checked by dspARAMAddresses. Fixes RE2 audio.
CoreTiming::ForceExceptionCheck(250);
// Real hardware DMAs in 32byte chunks, but we can get by with 8byte chunks