Add NMI support to dynamic recompiler.

This commit is contained in:
SarahW 2017-10-13 22:42:59 +01:00
commit 132a2eb110
3 changed files with 46 additions and 1 deletions

View file

@ -10,6 +10,7 @@
#include "codegen.h"
#include "cpu.h"
#include "fdc.h"
#include "nmi.h"
#include "pic.h"
#include "timer.h"
@ -560,7 +561,9 @@ void exec386_dynarec(int cycs)
CPU_BLOCK_END();
if (trap)
CPU_BLOCK_END();
if (nmi && nmi_enable && nmi_mask)
CPU_BLOCK_END();
ins++;
insc++;
@ -719,6 +722,8 @@ inrecomp=0;
if (trap)
CPU_BLOCK_END();
if (nmi && nmi_enable && nmi_mask)
CPU_BLOCK_END();
if (cpu_state.abrt)
{
@ -795,6 +800,8 @@ inrecomp=0;
if (trap)
CPU_BLOCK_END();
if (nmi && nmi_enable && nmi_mask)
CPU_BLOCK_END();
if (cpu_state.abrt)
{
@ -869,6 +876,19 @@ inrecomp=0;
loadcs(readmemw(0,addr+2));
}
}
else if (nmi && nmi_enable && nmi_mask)
{
cpu_state.oldpc = cpu_state.pc;
oldcs = CS;
// pclog("NMI\n");
x86_int(2);
nmi_enable = 0;
if (nmi_auto_clear)
{
nmi_auto_clear = 0;
nmi = 0;
}
}
else if ((flags&I_FLAG) && pic_intpending)
{
temp=picinterrupt();