// FAULT(FAULT_UD, 0);
// return;
//}
+ UINT8 IOPL = cpustate->IOP1 | (cpustate->IOP2 << 1);
if((PROTECTED_MODE && ((V8086_MODE) || (cpustate->CPL != 0)))) {
logerror("Call from non-supervisor privilege: I386OP(mov_r32_cr) at %08X", oldpc);
FAULT(FAULT_GP, 0);
FAULT(FAULT_UD, 0);
return;
}
+ UINT8 IOPL = cpustate->IOP1 | (cpustate->IOP2 << 1);
if(PROTECTED_MODE && ((V8086_MODE) || (cpustate->CPL != 0))) {
logerror("Call from non-supervisor privilege: I386OP(mov_cr_r32) at %08X", oldpc);
FAULT(FAULT_GP, 0);
{
int interrupt = FETCH(cpustate);
CYCLES(cpustate,CYCLES_INT);
- if(V8086_MODE) {
- //logerror("INT %02xh @V8086(16bit) mode PC=%08X\n", interrupt, cpustate->pc - 1);
-// if((!cpustate->IOP1 || !cpustate->IOP2))
-// {
-// logerror("IRQ (%08x): Is in Virtual 8086 mode and IOPL != 3.\n",cpustate->pc);
-// FAULT(FAULT_GP,0);
-// } else {
- BIOS_INT(interrupt);
-// }
- } else {
- //logerror("INT %02xh @16bit mode PC=%08X\n", interrupt, cpustate->pc - 1);
-// UINT8 IOPL = cpustate->IOP1 | (cpustate->IOP2 << 1);
-// if(!(PROTECTED_MODE && (cpustate->CPL > IOPL))) {
- BIOS_INT(interrupt);
-// }
- }
+ //BIOS_INT(interrupt);
+ BIOS_INT32(interrupt);
+
cpustate->ext = 0; // not an external interrupt
i386_trap(cpustate,interrupt, 1, 0);
cpustate->ext = 1;
int interrupt = FETCH(cpustate);
CYCLES(cpustate,CYCLES_INT);
#if 1
- if(V8086_MODE) {
- //logerror("INT %02xh @V8086(32bit) mode PC=%08X\n", interrupt, cpustate->pc - 1);
-// if((!cpustate->IOP1 || !cpustate->IOP2))
-// {
-// logerror("IRQ (%08x): Is in Virtual 8086 mode and IOPL != 3.\n",cpustate->pc);
-// FAULT(FAULT_GP,0);
-// } else {
- BIOS_INT(interrupt);
-// }
- } else {
- //logerror("INT %02xh @32bit mode PC=%08X\n", interrupt, cpustate->pc - 1);
-// UINT8 IOPL = cpustate->IOP1 | (cpustate->IOP2 << 1);
-// if(!(PROTECTED_MODE && (cpustate->CPL > IOPL))) {
- BIOS_INT(interrupt);
-// }
- }
+ BIOS_INT32(interrupt);
#endif
cpustate->ext = 0; // not an external interrupt
i386_trap(cpustate,interrupt, 1, 0);