Interrupts cause process control to be passed to an interrupt
handling routine. Upon completion of interrupt processing, a Return
From Interrupt (RFI) instruction restores the saved processor state,
and the execution proceeds with the interrupted instruction.
When responding to an interrupt, the processor behaves as
if a single instruction were fetched and executed, not pipelined.
Any interrupt conditions raised by that instruction are handled
immediately. If there are none, the next instruction is fetched,
and so on.
Faults, traps, interrupts, and checks are different classes
of interrupts.
A fault occurs when an instruction requests a legitimate action
that cannot be carried out due to a system problem. After the problem
has been corrected, the instruction causing the fault executes normally.
Faults are synchronous with respect to the instruction stream.
A trap occurs when a function requested by the current instruction
can not or should not be carried out. For example, attempting to
access a page for which a user does not have privilege causes a
trap. Another example is when the user requires system intervention
before or after the instruction is executed, such as page reference
traps used for debugging. Traps are synchronous with respect to
the instruction stream.
An interrupt occurs when an external device requires processor
attention. The external device sets a bit in the External Interrupt
Request register (EIRR). Interrupts are asynchronous with respect
to the instruction stream.
A check occurs when the processor detects a malfunction. The
malfunction may or may not be correctable. Checks can be either
synchronous or asynchronous with respect to the instruction stream.