Hi Koen
Can you confirm that you INTC0_IMRL is set to the value you want? I can understand why you have the I2C and UARTs unmasked, but you have unmasked all of the edge port interrupts. Did you mean
INTC0_IMRL = 0xa3fffffd ?
A spurious interrupt exception occurs because the IMR has been changed between the time when an interrupt source has been recognised, and the time the core comes to determine the highest priority source at that level.
The IMR is used twice - during interrupt recognition, the interrupt controller uses it to determine if there are any active requests. Then there is a short delay while the interrupt controller works out it the interrupt's level is greater than that of the SR. If it is, the interrupt's level is passed to the core. The core then uses the IMR to find the highest, unmasked source at that level. If the relevant bit in the IMR is changed from 0 to 1 before the final step, you get a spurious interrupt.
Are you using INTC0_IMRL to mask and unmask your interrupts a lot? If you use INTC0_IMRL in an ISR to mask and unmask your source you may get this problem.
Paul.