static void check_ipl(void)
{
- if (ipl_fetched)
- return;
- if (using_ce || isce020() || using_prefetch_020)
- out("ipl_fetch();\n");
- ipl_fetched = 1;
+ set_last_access_ipl();
}
static void check_ipl_always(void)
{
- if (using_ce || isce020())
+ if (using_ce) {
+ out("ipl_fetch();\n");
+ }
+ if (isce020()) {
out("ipl_fetch();\n");
+ }
}
static void addcycles_020(int cycles)
{
if (!isprefetch020() || no_prefetch_ce020)
return;
- check_ipl();
out("regs.irc = %s(%d);\n", prefetch_opcode, m68k_pc_offset);
}
static void get_prefetch_020_continue(void)
out("regs.ir = regs.irc;\n");
if (dozero)
out("regs.irc = 0;\n");
+ check_ipl();
}
static void irc2ir (void)
{
}
next_level_000();
}
- set_last_access_ipl();
out("%s(%d);\n", prefetch_word, m68k_pc_offset + 2);
count_readw++;
check_prefetch_bus_error(m68k_pc_offset + 2, -1, 0);
}
check_prefetch_bus_error(-1, -1, -1);
irc2ir();
+ check_ipl_always();
if (using_bus_error) {
copy_opcode();
if (cpu_level == 0) {
va_end(parms);
out(outbuf);
}
- set_last_access_ipl();
out("%s(%d);\n", prefetch_word, 2);
count_readw++;
if (pctype > 0) {
fill_prefetch_next_after(0, NULL);
insn_n_cycles += 4;
}
- check_ipl();
out("%s(%sa, %s >> 16);\n", dstwx, to, from);
sprintf(tmp, "%s >> 16", from);
count_writew++;
if (flags & GF_SECONDWORDSETFLAGS) {
genflags(flag_logical, g_instr->size, "src", "", "");
}
- check_ipl();
out("%s(%sa + 2, %s);\n", dstwx, to, from);
count_writew++;
check_bus_error(to, 2, 1, 1, from, 1, pcoffset);
if (store_dir > 1) {
fill_prefetch_next_after(0, NULL);
}
- check_ipl();
out("%s(%sa, %s >> 16); \n", dstwx, to, from);
sprintf(tmp, "%s >> 16", from);
count_writew++;
if (flags & GF_SECONDWORDSETFLAGS) {
genflags(flag_logical, g_instr->size, "src", "", "");
}
- check_ipl();
out("%s(%sa + 2, %s); \n", dstwx, to, from);
count_writew++;
check_bus_error(to, 2, 1, 1, from, 1, pcoffset);
if (using_prefetch) {
incpc ("(uae_s32)src + 2");
fill_prefetch_full_000_special(2, NULL);
- check_ipl_always();
if (using_ce)
out("return;\n");
else
} else {
incpc ("(uae_s32)src + 2");
add_head_cycs (6);
- fill_prefetch_full_020();
check_ipl_always();
+ fill_prefetch_full_020();
returncycles (10);
}
pop_ins_cnt();