[Prev][Next][Index][Thread]
x86 interrupt handling
I'm also a little puzzled about the interrupt
handling logic. Here again I am very sure that there is a good reason for the
handling and that I have missed it.
It appears that interrupts are programmed to
manifest as exception vectors 0x20..0x27 (master) and 0x28..0x2f (slave). This
is good, as it ensures that the trap vectors are disjoint. Under DOS, in
contrast, it is hard to distinguish interrupts from exceptions, and in some
cases this proves unfortunate.
Given the uniform numbering, the absence of a
unified trap handler has me a bit puzzled. The interrupt entry points clearly
need to disable the PICs, but this can be done according to the same design
logic that differentiates exceptions that push an error code from those that
don't -- it's a third (primary) and fourth (secondary) case. Once the interrupt
vector numbers are recoded, there is no real reason why they shouldn't just go
through the standard trap handler with exception codes in the range 0x20..0x2f.
The only difference that I can see in the two handlers is the use of different
annotation tables. Unless I have missed something, the separation of annotation
tables appears to be a side effect of the separation of the trap/interrupt
handlers rather than an intended aspect of the design.
I'm surely missing something here, and I'ld
appreciate a hint as to what it might be.
While I'm thinking about it, how heavily do the
various COM objects rely on the annotation mechanism?