[PATCH] krnl386.exe16: Check for pending DPMI events in call16_handler().

Alexandre Julliard julliard at winehq.org
Mon Dec 4 09:46:45 CST 2017


Zebediah Figura <z.figura12 at gmail.com> writes:

> On 12/04/2017 05:44 AM, Alexandre Julliard wrote:
>> Zebediah Figura <z.figura12 at gmail.com> writes:
>> 
>>> -    /* Check for pending events. */
>>> -
>>> -    output( "\t.byte 0x64\n\ttestl $0xffffffff,(%d)\n", VM86_PENDING_OFFSET );
>>> -    output( "\tje %s\n", asm_name("DPMI_PendingEventCheck_Cleanup") );
>>> -    output( "\t.byte 0x64\n\ttestl $0xffffffff,(%d)\n", DPMI_VIF_OFFSET );
>>> -    output( "\tje %s\n", asm_name("DPMI_PendingEventCheck_Cleanup") );
>> 
>> This doesn't seem right. Are you sure it's safe to remove these checks?
>> 
>
> As far as I can tell, those flags shouldn't be modified from 32-bit
> code. But I could be wrong.
>
> Do you know of a program that relies on pending interrupts?

I'm not sure how 32-bit code is relevant, this is used by DOS apps that
use DPMI and handle hardware events. Since we add an event check when
handling a VM86_STI exception, it wouldn't surprise me if removing the
checks above caused an infinite loop.

-- 
Alexandre Julliard
julliard at winehq.org



More information about the wine-devel mailing list