Yes indeed that was my problem. I thought it would set the MPIC interrupt when the interrupt in the core is set.
Now I just disabled the interrupt (TCR[WIE]=0) and it kinda works.
Now I get the external interrupt on the other core exatctly 1 time.
I handle this with this routine:
// read IACK
value = *((unsigned long *)(0xFE000000 + 0x400A0));
// clear Watchdog status register
*((unsigned long *)(0xFE000000 + 0x43A00)) = 0x100;//3 << 8;
//disable external interrupt
asm("wrtee %0" : : "r" (0));
// clear EOI
*((unsigned long *)(0xFE000000 + 0x400B0)) = 0;
// check EOI
value = *((unsigned long *)(0xFE000000 + 0x400B0));
if (value)
{
printf("Core0: EOI=0x%x\n\r", value);
}
// reenable external interrupts
asm("wrtee %0" : : "r" (1));
After this I reset the TSR to 0x0 and wait till it is 0xd0000000 (Watchdog expired for the 3rd time). But now the MPIC_WSRSR0 is not set anymore.
Why not? (I am using the mixed mode of the MPIC)
Hope you can help me with this.
Thanks for the help up to now.