Subj : Interrupts
To   : Lee Aroner
From : Jonathan de Boyne Pollard
Date : Mon Jun 04 2001 01:30 am

LA>> I had simply assumed that OS/2 used the same invalid int trick to
LA>> switch rings as Win does.

JdeBP>> The interrupt(s) used on DOS-Windows and and Windows NT
JdeBP>> aren't "invalid".  They are perfectly valid.  Their entries
JdeBP>> in the IDT point directly to the syscall dispatch routines.

LA> <sigh> OK, poor choice of language. The int is fine.

LA> What is done to switch control from the application to the OS is
LA> a jump into the bios copyright notice to force a processor exception.

LA> Happy now?

No, because that's not what happens.

As I explained in my previous message, the forced exception was used in OS/2
version 1.x as a means of switching from protected mode back to real mode in
order to run the DOS box.  It's nothing whatever to do with how processes
switch to kernel mode when executing system calls (which is done by the
ordinary call gate mechanism of the 286, and always has been).

The forced exception mechanism isn't used *at all* in OS/2 version 2.0.0 and
later, because version 2.0.0 was when "MVDM" support was introduced, which
makes use of the Virtual 8086 mode of the 386 CPU.  OS/2 version 2.0.0 and
later don't use real mode after boot time at all.

� JdeBP �

--- FleetStreet 1.22 NR
* Origin: JdeBP's point, using Squish <yuk!> (2:257/609.3)