Add NMI support to dynamic recompiler.
This commit is contained in:
parent
56b9c33780
commit
132a2eb110
3 changed files with 46 additions and 1 deletions
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Reference in a new issue