XC2200 Derivatives
System Units (Vol. 1 of 2)
Interrupt and Trap Functions
User’s Manual
5-42
V2.1, 2008-08
ICU_X2K, V2.2
5.11
Trap Functions
Traps interrupt current execution in a manner similar to standard interrupts. However,
trap functions offer the possibility to bypass the interrupt system’s prioritization process
for cases in which immediate system reaction is required. Trap functions are not
maskable and always have priority over interrupt requests on any priority level.
The XC2200 provides two different kinds of trapping mechanisms:
Hardware Traps
are
triggered by events that occur during program execution (such as illegal access or
undefined opcode);
Software Traps
are initiated via an instruction within the current
execution flow.
Software Traps
The TRAP instruction causes a software call to an interrupt service routine. The vector
number specified in the operand field of the trap instruction determines which vector
location in the vector table will be branched to.
Executing a TRAP instruction causes an effect similar to the occurrence of an interrupt
at the same vector. PSW, CSP (in segmentation mode), and IP are pushed on the
internal system stack and a jump is taken to the specified vector location. When a trap
is executed, the CSP for the trap service routine is loaded from register VECSEG. No
Interrupt Request flags are affected by the TRAP instruction. The interrupt service
routine called by a TRAP instruction must be terminated with a RETI (return from
interrupt) instruction to ensure correct operation.
Note: The CPU priority level and the selected register bank in register PSW are not
modified by the TRAP instruction, so the service routine is executed on the same
priority level from which it was invoked. Therefore, the service routine entered by
the TRAP instruction uses the original register bank and can be interrupted by
other traps or higher priority interrupts, other than when triggered by a hardware
event.
Hardware Traps
Hardware traps are issued by faults or specific system states which occur during runtime
of a program (not identified at assembly time). A hardware trap may also be triggered
intentionally, for example: to emulate additional instructions by generating an Illegal
Opcode trap. The XC2200 distinguishes nine different hardware trap functions. When a
hardware trap condition has been detected, the CPU branches to the trap vector location
for the respective trap condition. The instruction which caused the trap is completed
before the trap handling routine is entered.
Hardware traps are non-maskable and always have priority over every other CPU
activity. If several hardware trap conditions are detected within the same instruction
cycle, the highest priority trap is serviced (see
).