notaz.gp2x.de
/
picodrive.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
32x: sh2mame: critical bugfix (irqs on delay slot) + global cycle counter
[picodrive.git]
/
cpu
/
sh2mame
/
sh2pico.c
diff --git
a/cpu/sh2mame/sh2pico.c
b/cpu/sh2mame/sh2pico.c
index
463261e
..
fb4bea6
100644
(file)
--- a/
cpu/sh2mame/sh2pico.c
+++ b/
cpu/sh2mame/sh2pico.c
@@
-55,8
+55,6
@@
void sh2_reset(SH2 *sh2)
sh2->pc = RL(0);
sh2->r[15] = RL(4);
sh2->sr = I;
sh2->pc = RL(0);
sh2->r[15] = RL(4);
sh2->sr = I;
-
- sh2->internal_irq_level = -1;
}
/* Execute cycles - returns number of cycles actually run */
}
/* Execute cycles - returns number of cycles actually run */
@@
-64,6
+62,7
@@
int sh2_execute(SH2 *sh2_, int cycles)
{
sh2 = sh2_;
sh2_icount = cycles;
{
sh2 = sh2_;
sh2_icount = cycles;
+ sh2->cycles_aim += cycles;
do
{
do
{
@@
-112,7
+111,7
@@
int sh2_execute(SH2 *sh2_, int cycles)
}
sh2_icount--;
}
}
sh2_icount--;
}
- while (sh2_icount > 0
);
+ while (sh2_icount > 0
|| sh2->delay); /* can't interrupt before delay */
return cycles - sh2_icount;
}
return cycles - sh2_icount;
}