Commit 800dbf29 authored by Jukka Heinonen's avatar Jukka Heinonen Committed by Alexandre Julliard

Added support for DPMI RawModeSwitch.

parent 92b376d6
......@@ -32,6 +32,7 @@ typedef struct {
void (WINAPI *CallRMProc)( CONTEXT86 *context, int iret );
void (WINAPI *AllocRMCB)( CONTEXT86 *context );
void (WINAPI *FreeRMCB)( CONTEXT86 *context );
void (WINAPI *RawModeSwitch)( CONTEXT86 *context );
/* I/O functions */
void (WINAPI *SetTimer)( unsigned ticks );
......
......@@ -65,6 +65,7 @@ BOOL DPMI_LoadDosSystem(void)
GET_ADDR(CallRMProc);
GET_ADDR(AllocRMCB);
GET_ADDR(FreeRMCB);
GET_ADDR(RawModeSwitch);
GET_ADDR(SetTimer);
GET_ADDR(GetTimer);
GET_ADDR(inport);
......@@ -190,6 +191,15 @@ static void FreeRMCB( CONTEXT86 *context )
else Dosvm.FreeRMCB( context );
}
static void RawModeSwitch( CONTEXT86 *context )
{
if (!Dosvm.RawModeSwitch)
{
ERR("could not setup real-mode calls\n");
return;
}
else Dosvm.RawModeSwitch( context );
}
/**********************************************************************
* INT_Int31Handler (WPROCS.149)
......@@ -207,6 +217,11 @@ void WINAPI INT_Int31Handler( CONTEXT86 *context )
DWORD dw;
BYTE *ptr;
if (context->SegCs == DOSMEM_dpmi_sel) {
RawModeSwitch( context );
return;
}
RESET_CFLAG(context);
switch(AX_reg(context))
{
......
......@@ -356,9 +356,6 @@ static void do_int2f_16( CONTEXT86 *context )
break;
case 0x87: /* DPMI installation check */
#if 1 /* DPMI still breaks pkunzip */
if (ISV86(context)) break; /* so bail out for now if in v86 mode */
#endif
{
SYSTEM_INFO si;
GetSystemInfo(&si);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment