diff --git a/rpcs3/Emu/Cell/SPUCommonRecompiler.cpp b/rpcs3/Emu/Cell/SPUCommonRecompiler.cpp index e3455fcb2d..2a792f677e 100644 --- a/rpcs3/Emu/Cell/SPUCommonRecompiler.cpp +++ b/rpcs3/Emu/Cell/SPUCommonRecompiler.cpp @@ -3165,6 +3165,15 @@ spu_program spu_recompiler_base::analyse(const be_t* ls, u32 entry_point, s break; } + if (target >= SPU_LS_SIZE && target <= 0u - SPU_LS_SIZE) + { + if (g_spu_itype.decode(target) != spu_itype::UNK) + { + // End of jumptable: valid instruction + break; + } + } + if (target >= lsa && target < SPU_LS_SIZE) { // Possible jump table entry (absolute)