+ // check if the exception was actually an interrupt
+ if (exception == 0x500) {
+ u32 cookie;
+
+ _CPU_ISR_Disable(cookie);
+ printf("\nInterrupt occured ;-) Which one? -> ");
+ u32 enabled = read32(BW_PI_IRQMASK);
+ u32 flags = read32(BW_PI_IRQFLAG);
+ flags = flags & enabled;
+ if (flags & (1<<1)) { // RESET
+ write32(BW_PI_IRQFLAG, 1<<1);
+ printf("RESET :)\n");
+ }
+ if (flags & (1<<14)) { // Hollywood-PIC IRQ
+ write32(BW_PI_IRQFLAG, 1<<14);
+ write32(HW_PPCIRQFLAG, ~0); // dirty
+ printf("Hollywood-PIC :)\n");
+ }
+ _CPU_ISR_Restore(cookie);
+
+ return;
+ }
+