XC2200 Derivatives
System Units (Vol. 1 of 2)
Interrupt and Trap Functions
User’s Manual
5-45
V2.1, 2008-08
ICU_X2K, V2.2
Class A Traps
Class A traps are generated by the high priority system request SR0 or by special CPU
events such as the software break, a stack overflow, or an underflow event. Class A
traps are not used to indicate hardware failures. After a Class A event, a dedicated
service routine is called to react on the events. Each Class A trap has its own vector
location in the vector table. Class A traps cannot interrupt atomic/extend sequences and
I/O accesses in progress, because after finishing the service routine, the instruction flow
must be further correctly executed. For example, an interrupted extend sequence cannot
be restarted. All Class A traps are generated in the pipeline during the execution of
instructions, except for SR0, which is an asynchronous external event. Class A trap
events can be generated only during the memory stage of execution, so traps cannot be
generated by two different instructions in the pipeline in the same CPU cycle. The
execution of instructions which caused a Class A trap event is always completed. In the
case of an atomic/extend sequence or I/O read access in progress, the complete
sequence is executed. Upon completion of the instruction or sequence, the pipeline is
canceled and the IP of the instruction following the last one executed is pushed on the
stack. Therefore, in the case of a Class A trap, the stack always contains the IP of the
first not-executed instruction in the instruction flow.
Note: The Branch Folding Unit allows the execution of a branch instruction in parallel
with the preceding instruction. The pre-processed branch instruction is combined
with the preceding instruction. The branch is executed together with the instruction
which caused the Class A trap. The IP of the first following not-executed
instruction in the instruction flow is then pushed on the stack.
If more than one Class A trap occur at the same time, they are prioritized internally. The
SR0 trap has the highest priority and the software break has the lowest.
Note: In the case of two different Class A traps occurring simultaneously, both trap flags
are set. The IP of the instruction following the last one executed is pushed on the
stack. The trap with the higher priority is executed. After return from the service
routine, the IP is popped from the stack and immediately pushed again because
of the other pending Class A trap (unless the trap related to the second trap flag
in TFR has been cleared by the first trap service routine).
ILLOPA
2
rwh
Illegal Word Operand Access
0
B
No illegal word operand access event detected
1
B
A word operand access (read or write) to an
odd address has been attempted
Field
Bits
Type
Description