We are using MPC555 Quick Start Code Exception handlers and the "unhandled interrupt" handler.
The code looks like the following:
void unhandledISR(void)
{
asm {
opword 0 /* debug */
}
}
When the "unhandled interrupt" is taken the CPU seems to stall (there is no debugger attached to the target hardware).
How does "opword 0" cause the CPU to halt?
After instrumenting the code (printf output to a UART) I found the following:
LEVEL_7_ISR
unhandledISR
SIVEC: 0x3C000000
IntSrc: 15
SIPEND: 0x00800000
SIMASK: 0x01D60000
UIPEND: 0x00000000
rB: 0x00000000
UMCR: 0x20000000
SIVEC: 0x3C000000 == Interrupt Code 15
and we end up in the unhandledISR() via the jump table entry.
Why would Interrupt Code 15 fire when
UIPEND: 0x00000000 and
SIPEND: 0x00800000
I'm confused.