From 090a3a0aa83ca024819a14a0980b6be1af8c7198 Mon Sep 17 00:00:00 2001 From: Ulf Wohlers Date: Sun, 6 Jul 2003 16:13:02 +0000 Subject: [PATCH] cpu-flag changes and removed some stuff no longer needed Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@1094 --- src/ints/dpmi.cpp | 39 ++++++++------------------------------- 1 file changed, 8 insertions(+), 31 deletions(-) diff --git a/src/ints/dpmi.cpp b/src/ints/dpmi.cpp index d6578b62..68c0666c 100644 --- a/src/ints/dpmi.cpp +++ b/src/ints/dpmi.cpp @@ -268,14 +268,10 @@ private: RealPt realModeVec [DPMI_REALVEC_MAX]; Bitu oldRealVec [DPMI_REALVEC_MAX]; Bitu defaultHWIntFromProtMode[DPMI_REALVEC_MAX]; - Bitu firstRmCallback; - Bitu firstRmCallbackInt; - bool inHWINTDefaultHandler[DPMI_REALVEC_MAX]; PhysPt ptorint_base; /* Base of pmode int handlers that reflect to realmode */ Bitu exceptionSelector[DPMI_EXCEPTION_MAX],exceptionOffset[DPMI_EXCEPTION_MAX]; - Bitu xmsHandles[DPMI_XMSHANDLES_MAX]; Bitu protStack; @@ -448,7 +444,6 @@ void DPMI::CopyRegistersToBuffer(PhysPt data) mem_writed(data+0x14, reg_edx); mem_writed(data+0x18, reg_ecx); mem_writed(data+0x1C, reg_eax); - FILLFLAGS; mem_writew(data+0x20, flags.word); mem_writew(data+0x22, SegValue(es)); mem_writew(data+0x24, SegValue(ds)); @@ -469,7 +464,7 @@ void DPMI::LoadRegistersFromBuffer(PhysPt data) reg_edx = mem_readd(data+0x14); reg_ecx = mem_readd(data+0x18); reg_eax = mem_readd(data+0x1C); - SETFLAGSw(mem_readw(data+0x20)); + CPU_SetFlagsw(mem_readw(data+0x20)); SegSet16(es,mem_readw(data+0x22)); SegSet16(ds,mem_readw(data+0x24)); SegSet16(fs,mem_readw(data+0x26)); @@ -630,14 +625,14 @@ Bitu DPMI::ExceptionReturn(void) error = CPU_Pop32(); reg_eip = CPU_Pop32(); CPU_SetSegGeneral(cs,CPU_Pop32()); - SETFLAGSd(CPU_Pop32()); + CPU_SetFlagsd(CPU_Pop32()); reg_esp = CPU_Pop32(); CPU_SetSegGeneral(ss,CPU_Pop32()); } else { error = CPU_Pop16(); reg_eip = CPU_Pop16(); CPU_SetSegGeneral(cs,CPU_Pop16()); - SETFLAGSw(CPU_Pop16()); + CPU_SetFlagsw(CPU_Pop16()); reg_esp = CPU_Pop16(); CPU_SetSegGeneral(ss,CPU_Pop16()); }; @@ -690,7 +685,7 @@ Bitu DPMI::RealModeCallback(void) { // Call protected mode function Bitu num = mem_readw(PhysPt(SegPhys(cs)+reg_eip-2)); - num -= dpmi.firstRmCallback; + num -= dpmi.rmCallback[0].id; if ((num>=DPMI_REALMODE_CALLBACK_MAX) || !dpmi.rmCallback[num].inUse) E_Exit("DPMI: Illegal Realmode callback %02X.",num); if (dpmi.rmCallback[num].inCall) DPMI_LOG("DPMI: Recursive Realmode callback %02X",num); @@ -733,7 +728,6 @@ Bitu DPMI::RealModeCallback(void) CPU_SetSegGeneral(ss,dpmi.protStackSelector[dpmi.protStackCurrent++]); reg_esp = DPMI_PROTMODE_STACKSIZE; // prepare stack for iret - FILLFLAGS; if (dpmi.client.bit32) CPU_Push32(flags.word); else CPU_Push16(flags.word); // Setup cs:ip to return to DPMI_ReturnFromRealModeCallback CPU_SetSegGeneral(cs,GDT_CODE); @@ -789,7 +783,6 @@ Bitu DPMI::CallRealIRETFrame(void) // Provide Stack ProvideRealModeStack(prStack,toCopy); // Push flags - FILLFLAGS; CPU_Push16(flags.word); // Setup IP Bitu newCS = mem_readw(data+0x2C); @@ -898,7 +891,7 @@ Bitu DPMI::ptorHandler(void) if (num==0x0F) DPMI_LOG("DPMI: INT %02X %04X called.",num,reg_ax); // Prepare flags for real int - // SETFLAGSw(flags.word & 0x3ED5); // 0011111011010101b + // CPU_SetFlagsw(flags.word & 0x3ED5); // 0011111011010101b Interrupt(num); return 0; } @@ -919,12 +912,6 @@ Bitu DPMI::ptorHandlerReturn(void) DPMI_LOG("DPMI: INT %02X RETURN",num); // hardware ints exit here if (((num>=0x08) && (num<=0x0F)) || ((num>=0x70) && (num<=0x77))) { - for (Bitu i=0; i