icache_fetch = get_longi;
icache_fetch_word = NULL;
- if (currprefs.cpu_cycle_exact) {
+ if (currprefs.cpu_memory_cycle_exact) {
icache_fetch = mem_access_delay_longi_read_ce020;
}
if (currprefs.cpu_model >= 68040 && currprefs.cpu_memory_cycle_exact) {
void checkint(void)
{
doint();
- if (!m68k_accurate_ipl && !currprefs.cachesize && !(regs.spcflags & SPCFLAG_INT) && (regs.spcflags & SPCFLAG_DOINT))
+ if (!m68k_accurate_ipl && !currprefs.cachesize && !(regs.spcflags & SPCFLAG_INT) && (regs.spcflags & SPCFLAG_DOINT)) {
set_special(SPCFLAG_INT);
+ }
}
void REGPARAM2 MakeSR(void)
unset_special(SPCFLAG_UAEINT);
}
- if (m68k_interrupt_delay) {
+ if (m68k_interrupt_delay && m68k_accurate_ipl) {
int ipl = time_for_interrupt();
if (ipl) {
unset_special(SPCFLAG_INT);
} else {
if (spcflags & SPCFLAG_INT) {
int intr = intlev();
- unset_special (SPCFLAG_INT | SPCFLAG_DOINT);
+ unset_special(SPCFLAG_INT | SPCFLAG_DOINT);
if (intr > regs.intmask || (intr == 7 && intr > regs.lastipl)) {
do_interrupt(intr);
}