X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=deps%2Flightrec%2Femitter.c;h=0cf75c39a28a760a889ce80b2958826d910f0c3a;hb=7e3ce9afd1ddd5c16f20957cc7a46f6e681bff50;hp=b09dc94927b810f20ac125ef52adfa2067febc62;hpb=28d1bea2e828cd079593abc8c97ea6ff4fd7d4f4;p=pcsx_rearmed.git diff --git a/deps/lightrec/emitter.c b/deps/lightrec/emitter.c index b09dc949..0cf75c39 100644 --- a/deps/lightrec/emitter.c +++ b/deps/lightrec/emitter.c @@ -900,7 +900,7 @@ static void rec_store_direct(const struct block *block, const struct opcode *op, struct lightrec_state *state = block->state; struct regcache *reg_cache = state->reg_cache; jit_state_t *_jit = block->_jit; - jit_node_t *to_not_ram, *to_end; + jit_node_t *to_not_ram, *to_end = 0; u8 tmp, tmp2, tmp3, rs, rt; jit_note(__FILE__, __LINE__); @@ -1016,7 +1016,7 @@ static void rec_load_direct(const struct block *block, const struct opcode *op, struct lightrec_state *state = block->state; struct regcache *reg_cache = state->reg_cache; jit_state_t *_jit = block->_jit; - jit_node_t *to_not_ram, *to_not_bios, *to_end, *to_end2; + jit_node_t *to_not_ram, *to_not_bios = 0, *to_end, *to_end2; u8 tmp, rs, rt, addr_reg; s16 imm; @@ -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] = {