August 1993
16
Philips Semiconductors
Product specification
16-bit microcontroller
P90CE201
Fig.9 Vector number and format code.
VECTOR NUMBER
FORMAT CODE
0
0
0
0
FORMAT CODE
either 0000
or 1111
INFORMATION STACKED
Short Format (4 words)
68070 Format (17 words)
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
bit
MCD514
5.6
CPU interrupt processing
An Interrupt Controller handles all interrupts, solves any
priority problems and passes the highest level interrupt to
the CPU. The general interrupt handling mechanism and
the Interrupt Controller are described in section 6.2.
The CPU interrupt handling follows the same basic rules
as in the 68000. However, the following changes have
been made to simplify system development:
Interrupts with a priority level equal to or less than the
priority level actually running will not be accepted.
During the acknowledge cycle of an interrupt, the IPL
bits of the Status Register are set to the priority level of
the acknowledged interrupt. An exception to this is when
the IM bit in SYSCON2 is a logic 0. In this case level 7
is loaded into the Status Register. See section 6.1.2.
If the priority of the interrupt pending is greater than the
current processor priority then:
The exception processing sequence is started.
A copy of the Status Register is saved.
The privilege level is set to supervisor state.
Tracing is suppressed.
The priority level of the processor is set to that of the
interrupt being acknowledged.
The processor then gets the vector number from the
interrupting device, classifies it as an interrupt
acknowledge, and displays the interrupt level number
being acknowledged on the address bus.
If autovectoring is requested by the interrupting device, the
processor internally generates a vector number that
corresponds to the interrupt level number.
The processor then starts normal exception processing by
saving the format word, Program Counter, and Status
Register in the supervisor stack. The value of the vector in
the format word is either supplied externally by the
requesting device or is an internally generated vector
number multiplied by four (format is all zeros). The
Program Counter value is the address of the instruction
that would have been executed if the interrupt had not
been present. Then the interrupt vector contents are
fetched and loaded into the Program Counter. The
interrupt handling routine starts with normal instruction
execution.
Priority level 7 is a special case; it can only be detected if
the priority level was set to a lower value in between.