Added support for DPMI RawModeSwitch.

This commit is contained in:
Jukka Heinonen 2002-05-07 17:59:10 +00:00 committed by Alexandre Julliard
parent 92b376d61d
commit 800dbf2994
3 changed files with 16 additions and 3 deletions

View File

@ -32,6 +32,7 @@ typedef struct {
void (WINAPI *CallRMProc)( CONTEXT86 *context, int iret ); void (WINAPI *CallRMProc)( CONTEXT86 *context, int iret );
void (WINAPI *AllocRMCB)( CONTEXT86 *context ); void (WINAPI *AllocRMCB)( CONTEXT86 *context );
void (WINAPI *FreeRMCB)( CONTEXT86 *context ); void (WINAPI *FreeRMCB)( CONTEXT86 *context );
void (WINAPI *RawModeSwitch)( CONTEXT86 *context );
/* I/O functions */ /* I/O functions */
void (WINAPI *SetTimer)( unsigned ticks ); void (WINAPI *SetTimer)( unsigned ticks );

View File

@ -65,6 +65,7 @@ BOOL DPMI_LoadDosSystem(void)
GET_ADDR(CallRMProc); GET_ADDR(CallRMProc);
GET_ADDR(AllocRMCB); GET_ADDR(AllocRMCB);
GET_ADDR(FreeRMCB); GET_ADDR(FreeRMCB);
GET_ADDR(RawModeSwitch);
GET_ADDR(SetTimer); GET_ADDR(SetTimer);
GET_ADDR(GetTimer); GET_ADDR(GetTimer);
GET_ADDR(inport); GET_ADDR(inport);
@ -190,6 +191,15 @@ static void FreeRMCB( CONTEXT86 *context )
else Dosvm.FreeRMCB( 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) * INT_Int31Handler (WPROCS.149)
@ -207,6 +217,11 @@ void WINAPI INT_Int31Handler( CONTEXT86 *context )
DWORD dw; DWORD dw;
BYTE *ptr; BYTE *ptr;
if (context->SegCs == DOSMEM_dpmi_sel) {
RawModeSwitch( context );
return;
}
RESET_CFLAG(context); RESET_CFLAG(context);
switch(AX_reg(context)) switch(AX_reg(context))
{ {

View File

@ -356,9 +356,6 @@ static void do_int2f_16( CONTEXT86 *context )
break; break;
case 0x87: /* DPMI installation check */ 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; SYSTEM_INFO si;
GetSystemInfo(&si); GetSystemInfo(&si);