m68k_dreg (regs, reg) = ((m68k_dreg (regs, reg) & 0xffff0000)
| (((m68k_dreg (regs, reg) & 0xffff) - 1) & 0xffff));
- if ((m68k_dreg (regs, reg) & 0xffff) != 0xffff)
+ if ((m68k_dreg (regs, reg) & 0xffff) != 0xffff) {
m68k_setpc (pc + disp);
+ regs.fp_branch = true;
+ }
}
}
if ((opcode & 0x40) == 0)
extra = (uae_s32) (uae_s16) extra;
m68k_setpc (oldpc + extra);
+ regs.fp_branch = true;
}
}
printf ("\tfpuop_dbcc (opcode, extra);\n");
if (using_prefetch || using_prefetch_020) {
printf ("\tif (regs.fp_exception) goto %s;\n", endlabelstr);
+ printf ("\tif (regs.fp_branch) {\n");
+ printf ("\t\tregs.fp_branch = false;\n");
+ printf ("\t\tfill_prefetch();\n");
+ printf ("\t\tgoto %s;\n", endlabelstr);
+ printf ("\t}\n");
need_endlabel = 1;
}
break;
printf ("\tfpuop_bcc (opcode, pc,extra);\n");
if (using_prefetch || using_prefetch_020) {
printf ("\tif (regs.fp_exception) goto %s;\n", endlabelstr);
+ printf ("\tif (regs.fp_branch) {\n");
+ printf ("\t\tregs.fp_branch = false;\n");
+ printf ("\t\tfill_prefetch();\n");
+ printf ("\t\tgoto %s;\n", endlabelstr);
+ printf ("\t}\n");
need_endlabel = 1;
}
break;