How do interrupts in wine work?
nog at sdf.lonestar.org
Sat Feb 16 08:44:43 CST 2002
I got this feeling that I'm absolutly wrong in this but here goes...
The way that I see Interrupt handling in wine is that when a real-mode
dos executable is loaded, the processor (or the os mabe?) is forced into
v86 were the int xx intruction is not privilaged. In this mode an
exception is issued when an int xx is encountered and is then handeld by
the exception handler is dosvm.c. Which in turn checks if the we have a
builtin handler for the interrupt and if so then we simply call its
handler as defined in real_mode_handlers. But when the app switches to
protected mode, the int xx instuction becomes privilaged and gets
handeld by EmulateInstruction. In this function the 32-bit version is
not implemented but the 16-bit version is (Is this correct (the one is
16-bit the other 32-bit)? If not then what does long_op symbolise?) Is
it likley that this piece of code will ever get called? And if so then
why does it assume that the insterrupt it is emulating is not builtin?
What all of this probable garbage came from is: What will it take to
emulate int xx from 32-bit code?
More information about the wine-devel