Interrupt Controller (INTC)
MPC5606S Microcontroller Reference Manual, Rev. 7
Freescale Semiconductor 781
 
21.7.5 Priority Ceiling Protocol
21.7.5.1 Elevating Priority
The PRI field in 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 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 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, 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 cannot 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.
21.7.5.2 Ensuring Coherency
A scenario can cause non-coherent accesses to the shared resource. For example, ISR1 and ISR2 are both 
running on the same core and both share a resource. ISR1 has a lower priority than ISR2. ISR1 is executing 
and writes to the INTC_CPR. The instruction following this store is a store to a value in a shared coherent 
data block. Either immediately before or at the same time as the first store, the INTC asserts the interrupt 
request to the processor because the peripheral interrupt request for ISR2 has asserted. As the processor is 
responding to the interrupt request from the INTC, and as it is aborting transactions and flushing its 
pipeline, it is possible that both stores will be executed. ISR2 thereby thinks that it can access the data 
block coherently, but the data block has been corrupted.
OSEK uses the GetResource and ReleaseResource system services to manage access to a shared resource. 
To prevent corruption of a coherent data block, modifications to PRI in INTC_CPR can be made by those 
system services with the code sequence:
disable processor recognition of interrupts
PRI modification
enable processor recognition of interrupts
21.7.6 Selecting Priorities According to Request Rates and Deadlines
The selection of the priorities for the ISRs can be made using rate monotonic scheduling (RMS) or a 
superset of it, deadline monotonic scheduling (DMS). In RMS, the ISRs which have higher request rates 
have higher priorities. In DMS, if the deadline is before the next time the ISR is requested, then the ISR is 
1
ISR108 executes for peripheral interrupt request 100 because the first eight ISRs are for software configurable 
interrupt requests.