aica arm: mask pc using max aica ram, not actual, in entry points

Fix crash in Sturmwind, Volgarr and Gunloard
This commit is contained in:
Flyinghead 2019-09-27 15:57:39 +02:00
parent 920bb44c30
commit 88a5acd9e6
1 changed files with 5 additions and 1 deletions

View File

@ -1691,7 +1691,11 @@ extern "C" void CompileCode()
void* rv=EMIT_GET_PTR(); void* rv=EMIT_GET_PTR();
//update the block table //update the block table
EntryPoints[(armNextPC&ARAM_MASK)/4]=rv; // Note that we mask with the max aica size (8 MB), which is
// also the size of the EntryPoints table. This way the dynarec
// main loop doesn't have to worry about the actual aica
// ram size. The aica ram always wraps to 8 MB anyway.
EntryPoints[(armNextPC & (ARAM_SIZE_MAX - 1)) / 4] = rv;
//setup local pc counter //setup local pc counter
u32 pc=armNextPC; u32 pc=armNextPC;