Do not raise CPU trap if an exception has occurred, fixes #2577.
This commit is contained in:
@@ -172,17 +172,6 @@ exec386(int cycs)
|
|||||||
if (cpu_end_block_after_ins)
|
if (cpu_end_block_after_ins)
|
||||||
cpu_end_block_after_ins--;
|
cpu_end_block_after_ins--;
|
||||||
|
|
||||||
if (trap) {
|
|
||||||
flags_rebuild();
|
|
||||||
trap = 0;
|
|
||||||
#ifndef USE_NEW_DYNAREC
|
|
||||||
oldcs = CS;
|
|
||||||
#endif
|
|
||||||
cpu_state.oldpc = cpu_state.pc;
|
|
||||||
dr[6] |= 0x4000;
|
|
||||||
x86_int(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cpu_state.abrt) {
|
if (cpu_state.abrt) {
|
||||||
flags_rebuild();
|
flags_rebuild();
|
||||||
tempi = cpu_state.abrt & ABRT_MASK;
|
tempi = cpu_state.abrt & ABRT_MASK;
|
||||||
@@ -205,6 +194,15 @@ exec386(int cycs)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (trap) {
|
||||||
|
flags_rebuild();
|
||||||
|
trap = 0;
|
||||||
|
#ifndef USE_NEW_DYNAREC
|
||||||
|
oldcs = CS;
|
||||||
|
#endif
|
||||||
|
cpu_state.oldpc = cpu_state.pc;
|
||||||
|
dr[6] |= 0x4000;
|
||||||
|
x86_int(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (smi_line)
|
if (smi_line)
|
||||||
|
@@ -398,7 +398,7 @@ exec386_dynarec_int(void)
|
|||||||
CPU_BLOCK_END();
|
CPU_BLOCK_END();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (trap) {
|
if (!cpu_state.abrt && trap) {
|
||||||
trap = 0;
|
trap = 0;
|
||||||
#ifndef USE_NEW_DYNAREC
|
#ifndef USE_NEW_DYNAREC
|
||||||
oldcs = CS;
|
oldcs = CS;
|
||||||
|
Reference in New Issue
Block a user