|
<< Click to Display Table of Contents >> Navigation: ASA-EMulatR Reference Guide > Introduction > Architecture Overview > Chapter 7 - Exceptions, Faults, and Interrupts > 7.2 Terminology and Classification |
Alpha distinguishes multiple classes of exceptional events. The emulator models these distinctions explicitly through the PendingEventKind enumeration and the ExceptionClass_EV6 classification system.
Faults are synchronous events caused by instruction execution. They are detected during execution, associated with a specific instruction, prevent instruction completion, and are delivered precisely.
Examples: ITB/DTB miss, access violation, alignment fault, privileged instruction violation, illegal instruction, arithmetic exception, floating-point exception.
Traps are synchronous, instruction-related events that occur after instruction completion. They occur at instruction retirement boundaries, require TRAPB for precise ordering, and are architecturally visible after the instruction commits.
Examples: arithmetic traps (overflow, divide by zero), certain FP exceptions (depending on FPCR trap-enable qualifiers).
Interrupts are asynchronous events originating outside the instruction stream. They are sampled between instructions, masked by processor state (IPL, CM), may be deferred, and do not invalidate the current instruction.
Examples: hardware IRQs, timer interrupts, inter-processor interrupts (IPIs), device completion interrupts, ASTs (Asynchronous System Traps).
Every event entering the FaultDispatcher is classified by PendingEventKind:
enum class PendingEventKind : quint8 {
None = 0,
Exception, // Synchronous fault/trap
Interrupt, // Asynchronous interrupt
Ast, // Asynchronous System Trap
MachineCheck, // Machine check
Reset, // Reset/wakeup
PalCall // CALL_PAL event
};
See Also: exceptionLib/PendingEventKind.h; exceptionLib/ExceptionClass_EV6.h.