Skip to content
Snippets Groups Projects
Commit 800dbf29 authored by Jukka Heinonen's avatar Jukka Heinonen Committed by Alexandre Julliard
Browse files

Added support for DPMI RawModeSwitch.

parent 92b376d6
No related branches found
No related tags found
No related merge requests found
......@@ -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);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment