Interrupt Controller (INTC)
MPC5566 Microcontroller Reference Manual, Rev. 2
Freescale Semiconductor 10-37
 
10.5.5 Priority Ceiling Protocol
10.5.5.1 Elevating Priority
The PRI field in INTC current priority register (INTC_CPR) is elevated in the OSEK PCP to the ceiling 
of all of the priorities of the ISRs that share a resource. This protocol therefore allows coherent accesses 
of the ISRs to that shared resource.
For example, ISR1 has a priority of 1, ISR2 has a priority of 2, and ISR3 has a priority of 3. They all share 
the same resource. Before ISR1 or ISR2 can access that resource, they must raise the PRI value in 
INTC_CPR to 3, the ceiling of all of the ISR priorities. After they release the resource, the PRI value in 
INTC_CPR can be lowered. If they do not raise their priority, then ISR2 can preempt ISR1, and ISR3 can 
preempt ISR1 or ISR2, possibly corrupting the shared resource. Another possible failure mechanism is 
deadlock if the higher priority ISR needs the lower priority ISR to release the resource before it can 
continue, but the lower priority ISR can not release the resource until the higher priority ISR completes 
and execution returns to the lower priority ISR.
Using the PCP instead of disabling processor recognition of all interrupts eliminates the time when 
accessing a shared resource that all higher priority interrupts are blocked. For example, while ISR3 cannot 
preempt ISR1 while it is accessing the shared resource, all of the ISRs with a priority higher than 3 can 
preempt ISR1.
10.5.5.2 Ensuring Coherency
Non-coherent accesses to a shared resource can occur. As an example, ISR1 and ISR2 both share a 
resource. ISR1 has a lower priority, therefore it executes and then writes the new PRI value in the current 
priority register (INTC_CPR). The next instruction writes a value to a shared coherent data block. 
If INTC asserts the ISR2 interrupt request to the processor just before or at the same time as the first ISR1 
write, it is possible for both the ISR1 and ISR2 writes to execute while the processor responds to the INTC 
request, discards the transactions, and flushes the processing pipeline. However, ISR2 cannot access the 
data block coherently because the data block is now corrupted.
10 ISR308 completes. Interrupt exception 
handler writes to INTC_EOIR.
X1
11 ISR108 completes. Interrupt exception 
handler writes to INTC_EOIR.
X0
12 RTOS continues execution. X 0
1
ISR108 executes for peripheral interrupt request 100 because the first eight ISRs are for software settable interrupt 
requests.
Table 10-10. Order of ISR Execution Example (continued)
Step Step Description
Code Executing At End of Step
PRI in 
INTC_CPR 
at End of 
Step
RTOS ISR108
1
ISR208 ISR308 ISR408
Interrupt 
Exception 
Handler