mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-05 07:17:45 -04:00
ARM SVP drc revived
This commit is contained in:
parent
ea431e9ebb
commit
d260165ad6
1 changed files with 5 additions and 12 deletions
|
@ -1438,12 +1438,9 @@ static int translate_op(unsigned int op, int *pc, int imm, int *end_cond, int *j
|
||||||
}
|
}
|
||||||
tr_mov16(0, *pc);
|
tr_mov16(0, *pc);
|
||||||
tr_r0_to_STACK(*pc);
|
tr_r0_to_STACK(*pc);
|
||||||
if (tmpv != A_COND_AL) {
|
if (tmpv != A_COND_AL)
|
||||||
u32 *real_ptr = tcache_ptr;
|
EOP_C_B_PTR(jump_op, tr_neg_cond(tmpv), 0,
|
||||||
tcache_ptr = jump_op;
|
tcache_ptr - jump_op - 2);
|
||||||
EOP_C_B(tr_neg_cond(tmpv),0,real_ptr - jump_op - 2);
|
|
||||||
tcache_ptr = real_ptr;
|
|
||||||
}
|
|
||||||
tr_mov16_cond(tmpv, 0, imm);
|
tr_mov16_cond(tmpv, 0, imm);
|
||||||
if (tmpv != A_COND_AL)
|
if (tmpv != A_COND_AL)
|
||||||
tr_mov16_cond(tr_neg_cond(tmpv), 0, *pc);
|
tr_mov16_cond(tr_neg_cond(tmpv), 0, *pc);
|
||||||
|
@ -1712,12 +1709,8 @@ static void *emit_block_epilogue(int cycles, int cond, int pc, int end_pc)
|
||||||
ssp_block_table[pc];
|
ssp_block_table[pc];
|
||||||
if (target != NULL)
|
if (target != NULL)
|
||||||
emith_jump(target);
|
emith_jump(target);
|
||||||
else {
|
else
|
||||||
int ops = emith_jump(ssp_drc_next);
|
emith_jump(ssp_drc_next);
|
||||||
end_ptr = tcache_ptr;
|
|
||||||
// cause the next block to be emitted over jump instruction
|
|
||||||
tcache_ptr -= ops;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
u32 *target1 = (pc < 0x400) ?
|
u32 *target1 = (pc < 0x400) ?
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue