aboutsummaryrefslogtreecommitdiff
path: root/deps/lightrec/optimizer.c
diff options
context:
space:
mode:
authorhizzlekizzle2020-05-20 19:34:07 -0500
committerGitHub2020-05-20 19:34:07 -0500
commit67b91c4b9c44f0d973d2d6a85481e3f437ccc583 (patch)
treebabc4b93857004f0c7b5aa41cc4c88ee1cc7b501 /deps/lightrec/optimizer.c
parent58bf341a7683b5a73f5e440c1df705daa4326a56 (diff)
parent6b02f240d929ffa0cb488bc6bb4d27b023e1a822 (diff)
downloadpcsx_rearmed-67b91c4b9c44f0d973d2d6a85481e3f437ccc583.tar.gz
pcsx_rearmed-67b91c4b9c44f0d973d2d6a85481e3f437ccc583.tar.bz2
pcsx_rearmed-67b91c4b9c44f0d973d2d6a85481e3f437ccc583.zip
Merge pull request #421 from negativeExponent/lightrec_update
Update lightrec to latest upstream
Diffstat (limited to 'deps/lightrec/optimizer.c')
-rw-r--r--deps/lightrec/optimizer.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/deps/lightrec/optimizer.c b/deps/lightrec/optimizer.c
index 92b4daa..cf431f2 100644
--- a/deps/lightrec/optimizer.c
+++ b/deps/lightrec/optimizer.c
@@ -675,7 +675,7 @@ static int lightrec_switch_delay_slots(struct block *block)
list->c = next_op;
list->next->c = op;
list->next->flags = list->flags | LIGHTREC_NO_DS;
- list->flags = flags;
+ list->flags = flags | LIGHTREC_NO_DS;
list->offset++;
list->next->offset--;
}
@@ -877,11 +877,12 @@ static int lightrec_flag_stores(struct block *block)
case OP_SB:
case OP_SH:
case OP_SW:
- /* Mark all store operations that target $sp, $gp, $k0
- * or $k1 as not requiring code invalidation. This is
- * based on the heuristic that stores using one of these
+ /* Mark all store operations that target $sp or $gp
+ * as not requiring code invalidation. This is based
+ * on the heuristic that stores using one of these
* registers as address will never hit a code page. */
- if (list->i.rs >= 26 && list->i.rs <= 29) {
+ if (list->i.rs >= 28 && list->i.rs <= 29 &&
+ !block->state->maps[PSX_MAP_KERNEL_USER_RAM].ops) {
pr_debug("Flaging opcode 0x%08x as not requiring invalidation\n",
list->opcode);
list->flags |= LIGHTREC_NO_INVALIDATE;