mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-05 15:27:46 -04:00
drc: debug improvements
This commit is contained in:
parent
bf092a3631
commit
6d7979571d
6 changed files with 126 additions and 36 deletions
|
@ -572,7 +572,7 @@ static void *dr_prepare_ext_branch(u32 pc, int is_slave, int tcache_id)
|
|||
break;
|
||||
cnt = i + 1;
|
||||
if (cnt >= block_link_pool_max_counts[tcache_id]) {
|
||||
dbg(1, "bl overflow for tcache %d\n", tcache_id);
|
||||
dbg(1, "bl overflow for tcache %d", tcache_id);
|
||||
return NULL;
|
||||
}
|
||||
bl += cnt;
|
||||
|
@ -994,6 +994,18 @@ static void rcache_unlock_all(void)
|
|||
reg_temp[i].flags &= ~HRF_LOCKED;
|
||||
}
|
||||
|
||||
static inline u32 rcache_used_hreg_mask(void)
|
||||
{
|
||||
u32 mask = 0;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(reg_temp); i++)
|
||||
if (reg_temp[i].type != HR_FREE)
|
||||
mask |= 1 << reg_temp[i].hreg;
|
||||
|
||||
return mask;
|
||||
}
|
||||
|
||||
static void rcache_clean(void)
|
||||
{
|
||||
int i;
|
||||
|
@ -1477,16 +1489,18 @@ static void REGPARM(2) *sh2_translate(SH2 *sh2, int tcache_id)
|
|||
emit_move_r_imm32(SHR_PC, pc);
|
||||
sr = rcache_get_reg(SHR_SR, RC_GR_RMW);
|
||||
FLUSH_CYCLES(sr);
|
||||
// rcache_clean(); // FIXME
|
||||
rcache_flush();
|
||||
rcache_clean();
|
||||
|
||||
tmp = rcache_used_hreg_mask();
|
||||
emith_save_caller_regs(tmp);
|
||||
emit_do_static_regs(1, 0);
|
||||
emith_pass_arg_r(0, CONTEXT_REG);
|
||||
emith_call(do_sh2_cmp);
|
||||
emith_restore_caller_regs(tmp);
|
||||
}
|
||||
#endif
|
||||
|
||||
pc += 2;
|
||||
cycles += opd->cycles;
|
||||
|
||||
if (skip_op > 0) {
|
||||
skip_op--;
|
||||
|
@ -2517,6 +2531,8 @@ static void REGPARM(2) *sh2_translate(SH2 *sh2, int tcache_id)
|
|||
end_op:
|
||||
rcache_unlock_all();
|
||||
|
||||
cycles += opd->cycles;
|
||||
|
||||
if (op_flags[i+1] & OF_DELAY_OP) {
|
||||
do_host_disasm(tcache_id);
|
||||
continue;
|
||||
|
@ -3083,9 +3099,6 @@ int sh2_drc_init(SH2 *sh2)
|
|||
for (i = 1; i < ARRAY_SIZE(tcache_bases); i++)
|
||||
tcache_bases[i] = tcache_ptrs[i] = tcache_bases[i - 1] + tcache_sizes[i - 1];
|
||||
|
||||
// tmp
|
||||
PicoOpt |= POPT_DIS_VDP_FIFO;
|
||||
|
||||
#if (DRC_DEBUG & 4)
|
||||
for (i = 0; i < ARRAY_SIZE(block_tables); i++)
|
||||
tcache_dsm_ptrs[i] = tcache_bases[i];
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue