|
<< Click to Display Table of Contents >> Navigation: ASA-EMulatR Reference Guide > Introduction > Architecture Overview > Chapter 18 – Fault Dispatcher & Precise Exceptions > 18.5 Exception-to-PAL Vector Mapping |
ExceptionMapping_inl::mapClassToPalVector() (exceptionLib/ExceptionMapping_inl.h) is the single source of truth for mapping ExceptionClass_EV6 values to PalVectorId_EV6 entries. This function is the sole location where exception classification is translated into a PAL dispatch address. Exception and interrupt vectors are fixed offsets from PAL_BASE, as defined in the Alpha 21264 Hardware Reference Manual (Table 5-8).
Representative mappings:
ExceptionClass |
PalVectorId |
Offset |
|---|---|---|
Reset |
RESET |
0x0000 |
MachineCheck |
MCHK |
0x0080 |
Arithmetic |
ARITH |
0x0200 |
Interrupt |
INTERRUPT |
0x0280 |
Dtb_miss_single |
DTB_MISS_SINGLE |
0x0300 |
Dtb_miss_double_4 |
DTB_MISS_DOUBLE |
0x0380 |
DtbAcv / Dfault |
DFAULT |
0x0400 |
ItbMiss |
ITB_MISS |
0x0480 |
Unalign |
UNALIGN |
0x0500 |
OpcDec |
OPCDEC |
0x0580 |
Fen |
FEN |
0x0600 |
The PalVectorTable (palLib_EV6/PalVectorTable_final.h) stores PalVectorEntry records keyed by PalVectorId. Each entry contains the PAL entry PC (PAL_BASE + offset), the target IPL to set on entry, and entry-condition flags. The table is initialized once during system boot via PalVectorTable::initialize() and accessed at delivery time via globalPALVectorTable().lookup(vectorId).
The PAL entry PC is computed as PAL_BASE + vectorOffset, with the low bit set to indicate PAL mode (entryPC | 0x1). This bit is the architectural PAL mode indicator checked by the execution engine.
See Also: exceptionLib/ExceptionMapping_inl.h – mapClassToPalVector() (single source of truth); palLib_EV6/PalVectorId_refined.h – PalVectorId enumeration; palLib_EV6/PalVectorTable_final.h – Vector table; Alpha 21264 Hardware Reference Manual, Table 5-8.