sh2 interpreter, minor improvement for irq handling

This commit is contained in:
kub 2021-05-19 19:18:36 +02:00
parent 341b0ccbad
commit f99f0794cf

View file

@ -167,14 +167,16 @@ int sh2_execute_interpreter(SH2 *sh2, int cycles)
sh2->icount--; sh2->icount--;
if (sh2->test_irq && !sh2->delay && sh2->pending_level > ((sh2->sr >> 4) & 0x0f)) if (sh2->test_irq && !sh2->delay)
{ {
int level = sh2->pending_level; int level = sh2->pending_level;
if (level > ((sh2->sr >> 4) & 0x0f))
{
int vector = sh2->irq_callback(sh2, level); int vector = sh2->irq_callback(sh2, level);
sh2_do_irq(sh2, level, vector); sh2_do_irq(sh2, level, vector);
}
sh2->test_irq = 0; sh2->test_irq = 0;
} }
} }
while (sh2->icount > 0 || sh2->delay); /* can't interrupt before delay */ while (sh2->icount > 0 || sh2->delay); /* can't interrupt before delay */