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__);
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;
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);
}
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] = {