18.5 Exception-to-PAL Vector Mapping

<< 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

18.5.1 ExceptionMapping

 

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

 


 

18.5.2 PalVectorTable

 

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.