From: Francois Gouget Subject: [PATCH 1/2] krnl386.exe16: Avoid the DOSVM_HardwareInterruptPM() forward declaration. Message-Id: Date: Thu, 22 Feb 2018 15:13:47 +0100 (CET) Signed-off-by: Francois Gouget --- dlls/krnl386.exe16/dosexe.h | 1 - dlls/krnl386.exe16/interrupts.c | 86 ++++++++++++++++++++--------------------- 2 files changed, 43 insertions(+), 44 deletions(-) diff --git a/dlls/krnl386.exe16/dosexe.h b/dlls/krnl386.exe16/dosexe.h index 8f9dc3458e6..4a59cdf6c05 100644 --- a/dlls/krnl386.exe16/dosexe.h +++ b/dlls/krnl386.exe16/dosexe.h @@ -275,7 +275,6 @@ extern void __wine_call_int_handler( CONTEXT *, BYTE ) DECLSPEC_HIDDEN; extern void DOSVM_CallBuiltinHandler( CONTEXT *, BYTE ) DECLSPEC_HIDDEN; extern BOOL DOSVM_EmulateInterruptPM( CONTEXT *, BYTE ) DECLSPEC_HIDDEN; extern FARPROC16 DOSVM_GetPMHandler16( BYTE ) DECLSPEC_HIDDEN; -extern void DOSVM_HardwareInterruptPM( CONTEXT *, BYTE ) DECLSPEC_HIDDEN; extern void DOSVM_SetPMHandler16( BYTE, FARPROC16 ) DECLSPEC_HIDDEN; /* ioports.c */ diff --git a/dlls/krnl386.exe16/interrupts.c b/dlls/krnl386.exe16/interrupts.c index 298f7e467a6..70690f600e6 100644 --- a/dlls/krnl386.exe16/interrupts.c +++ b/dlls/krnl386.exe16/interrupts.c @@ -177,6 +177,49 @@ static void DOSVM_PushFlags( CONTEXT *context, BOOL islong, BOOL isstub ) } +/********************************************************************** + * DOSVM_HardwareInterruptPM + * + * Emulate call to interrupt handler in 16-bit or 32-bit protected mode. + * + * Pushes interrupt frame to stack and changes instruction + * pointer to interrupt handler. + */ +void DOSVM_HardwareInterruptPM( CONTEXT *context, BYTE intnum ) +{ + FARPROC16 addr = DOSVM_GetPMHandler16( intnum ); + + if (SELECTOROF(addr) == DOSVM_dpmi_segments->int16_sel) + { + TRACE( "builtin interrupt %02x has been invoked " + "(through vector %02x)\n", + OFFSETOF(addr)/DOSVM_STUB_PM16, intnum ); + + if (intnum == 0x25 || intnum == 0x26) + DOSVM_PushFlags( context, FALSE, FALSE ); + + DOSVM_BuildCallFrame( context, + DOSVM_IntProcRelay, + DOSVM_GetBuiltinHandler( + OFFSETOF(addr)/DOSVM_STUB_PM16 ) ); + } + else + { + TRACE( "invoking hooked interrupt %02x at %04x:%04x\n", + intnum, SELECTOROF(addr), OFFSETOF(addr) ); + + /* Push the flags and return address on the stack */ + PUSH_WORD16( context, LOWORD(context->EFlags) ); + PUSH_WORD16( context, context->SegCs ); + PUSH_WORD16( context, LOWORD(context->Eip) ); + + /* Jump to the interrupt handler */ + context->SegCs = HIWORD(addr); + context->Eip = LOWORD(addr); + } +} + + /********************************************************************** * DOSVM_EmulateInterruptPM * @@ -243,49 +286,6 @@ BOOL DOSVM_EmulateInterruptPM( CONTEXT *context, BYTE intnum ) } -/********************************************************************** - * DOSVM_HardwareInterruptPM - * - * Emulate call to interrupt handler in 16-bit or 32-bit protected mode. - * - * Pushes interrupt frame to stack and changes instruction - * pointer to interrupt handler. - */ -void DOSVM_HardwareInterruptPM( CONTEXT *context, BYTE intnum ) -{ - FARPROC16 addr = DOSVM_GetPMHandler16( intnum ); - - if (SELECTOROF(addr) == DOSVM_dpmi_segments->int16_sel) - { - TRACE( "builtin interrupt %02x has been invoked " - "(through vector %02x)\n", - OFFSETOF(addr)/DOSVM_STUB_PM16, intnum ); - - if (intnum == 0x25 || intnum == 0x26) - DOSVM_PushFlags( context, FALSE, FALSE ); - - DOSVM_BuildCallFrame( context, - DOSVM_IntProcRelay, - DOSVM_GetBuiltinHandler( - OFFSETOF(addr)/DOSVM_STUB_PM16 ) ); - } - else - { - TRACE( "invoking hooked interrupt %02x at %04x:%04x\n", - intnum, SELECTOROF(addr), OFFSETOF(addr) ); - - /* Push the flags and return address on the stack */ - PUSH_WORD16( context, LOWORD(context->EFlags) ); - PUSH_WORD16( context, context->SegCs ); - PUSH_WORD16( context, LOWORD(context->Eip) ); - - /* Jump to the interrupt handler */ - context->SegCs = HIWORD(addr); - context->Eip = LOWORD(addr); - } -} - - /********************************************************************** * DOSVM_GetPMHandler16 * -- 2.16.1