From a9ce21843e7b3e72d7a669f20506f50af2c18277 Mon Sep 17 00:00:00 2001 From: cracyc Date: Fri, 31 Oct 2014 22:24:02 -0500 Subject: i386: GP fault with softint in v86 mode when iopl < 3 [Carl] --- src/emu/cpu/i386/i386.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/emu/cpu/i386/i386.c b/src/emu/cpu/i386/i386.c index 800575911db..b9593ddfed7 100644 --- a/src/emu/cpu/i386/i386.c +++ b/src/emu/cpu/i386/i386.c @@ -763,6 +763,15 @@ void i386_device::i386_trap(int irq, int irq_gate, int trap_level) logerror("IRQ (%08x): Software IRQ - gate DPL is less than CPL.\n",m_pc); FAULT_EXP(FAULT_GP,entry+2) } + if(V8086_MODE) + { + if((!m_IOP1 || !m_IOP2) && (m_opcode != 0xcc)) + { + logerror("IRQ (%08x): Is in Virtual 8086 mode and IOPL != 3.\n",m_pc); + FAULT(FAULT_GP,0) + } + + } } if((flags & 0x0080) == 0) -- cgit v1.2.3