aboutsummaryrefslogtreecommitdiff
path: root/deps/lightrec/emitter.c
diff options
context:
space:
mode:
Diffstat (limited to 'deps/lightrec/emitter.c')
-rw-r--r--deps/lightrec/emitter.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/deps/lightrec/emitter.c b/deps/lightrec/emitter.c
index b09dc94..206a45c 100644
--- a/deps/lightrec/emitter.c
+++ b/deps/lightrec/emitter.c
@@ -1250,7 +1250,8 @@ static void rec_mtc(const struct block *block, const struct opcode *op, u32 pc)
lightrec_regcache_mark_live(reg_cache, _jit);
- if (op->i.op == OP_CP0 && (op->r.rd == 12 || op->r.rd == 13))
+ if (op->i.op == OP_CP0 && !(op->flags & LIGHTREC_NO_DS) &&
+ (op->r.rd == 12 || op->r.rd == 13))
lightrec_emit_end_of_block(block, op, pc, -1, pc + 4, 0, 0, true);
}
@@ -1427,7 +1428,7 @@ static void rec_meta_sync(const struct block *block,
op->offset << 2);
target = &state->targets[state->nb_targets++];
target->offset = op->offset;
- target->label = jit_label();
+ target->label = jit_indirect();
}
static const lightrec_rec_func_t rec_standard[64] = {