How do interrupts in wine work?

Nog nog at
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 mailing list