mirror of
git://source.winehq.org/git/wine.git
synced 2024-08-30 21:24:55 +00:00
Added support for DPMI RawModeSwitch.
This commit is contained in:
parent
92b376d61d
commit
800dbf2994
|
@ -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 );
|
||||||
|
|
15
msdos/dpmi.c
15
msdos/dpmi.c
|
@ -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))
|
||||||
{
|
{
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in a new issue