[bug 718] Executing dos DPMI programs
jhei at iki.fi
Sun Nov 24 10:18:55 CST 2002
> Does someone has success when executing DPMI programs ?
> Every program I try to execute at this time fails,
> going to the debugger, saying :
> Unhandled exception: privileged instruction in 32-bit code
> In 32-bit mode.
> 0x00000000: int $0x31
DPMI16 programs should work as should simple DPMI32 programs.
However, most DPMI32 programs are not even supposed to work
because there is no real implementation of 32-bit interrupt
handling. It is on my TODO list but I'm currently working on
moving interrupt handlers to winedos dll and I shall return
to DPMI32 support after this.
The problem is that Wine has no support for calling Wine
functions from application context whose stack and code pointers
use 32-bit segmented model. Wine interrupt emulation
currently uses a simple scheme which works with any code pointer
but which fails miserably if stack pointer is over 0xffff.
The simplest fix would probably be to swap to 16-bit stack on
entry to Wine interrupt handler. This would mean that only
winedos dll needs to deal with 32-bit segmented stuff.
I have a rather good idea on how this can be implemented.
Anyway, your error message looks quite interesting because
current Wine version emulates *all* interrupt opcodes in real
mode, 16-bit protected mode and 32-bit protected mode and thus it
should be impossible to get this error message. Are you sure
you tried executing using the latest CVS version or at least
the latest release?
Jukka Heinonen <http://www.iki.fi/jhei/>
More information about the wine-devel