Chapter 9 Interrupt Controller (INTC)
MPC5602P Microcontroller Reference Manual, Rev. 4
222
Freescale Semiconductor
are negated. An initialization sequence for allowing the peripheral and software settable interrupt requests
to cause an interrupt request to the processor is: interrupt_request_initialization:
interrupt_request_initialization:
configure VTES and HVEN in INTC_MCR
configure VTBA in INTC_IACKR
raise the PRI
n
fields in INTC_PSR
n
set the enable bits or clear the mask bits for the peripheral interrupt requests
lower PRI in INTC_CPR to zero
enable processor recognition of interrupts
9.7.2
Interrupt exception handler
These example interrupt exception handlers use Power Architecture assembly code.
9.7.2.1
Software vector mode
interrupt_exception_handler:
code to create stack frame, save working register, and save SRR0 and SRR1
lis
r3,INTC_IACKR@ha
# form adjusted upper half of INTC_IACKR address
lwz
r3,INTC_IACKR@l(r3)
# load INTC_IACKR, which clears request to processor
lwz
r3,0x0(r3)
# load address of ISR from vector table
wrteei 1
# enable processor recognition of interrupts
code to save rest of context required by e500 EABI
mtlr
r3
# move INTC_IACKR contents into link register
blrl
# branch to ISR; link register updated with epilog
# address
epilog:
code to restore most of context required by e500 EABI
# Popping the LIFO after the restoration of most of the context and the disabling of processor
# recognition of interrupts eases the calculation of the maximum stack depth at the cost of
# postponing the servicing of the next interrupt request.
mbar
# ensure store to clear flag bit has completed
lis
r3,INTC_EOIR@ha
# form adjusted upper half of INTC_EOIR address
li
r4,0x0
# form 0 to write to INTC_EOIR
wrteei 0
# disable processor recognition of interrupts
stw
r4,INTC_EOIR@l(r3)
# store to INTC_EOIR, informing INTC to lower priority
code to restore SRR0 and SRR1, restore working registers, and delete stack frame
rfi
vector_table_base_address:
address of ISR for interrupt with vector 0
address of ISR for interrupt with vector 1
.
.
.
address of ISR for interrupt with vector 510
address of ISR for interrupt with vector 511