Index: kernel/genarch/src/drivers/grlib/irqmp.c
===================================================================
--- kernel/genarch/src/drivers/grlib/irqmp.c	(revision e47ed059f2f1f9164ef7bfb956f1b38b5998b23d)
+++ kernel/genarch/src/drivers/grlib/irqmp.c	(revision d0ca4c5c91808e6008c7fab9255aabdcafbf4e3e)
@@ -44,6 +44,9 @@
 	    PAGE_NOT_CACHEABLE);
 	
+	/* Clear all pending interrupts */
+	pio_write_32(&irqc->regs->clear, 0xffffffff);
+	
 	/* Mask all interrupts */
-	pio_write_32((void *) irqc->regs + GRLIB_IRQMP_MASK_OFFSET, 0x8);
+	pio_write_32((void *) irqc->regs + GRLIB_IRQMP_MASK_OFFSET, 0);
 }
 
@@ -62,5 +65,4 @@
 void grlib_irqmp_clear(grlib_irqmp_t *irqc, unsigned int inum)
 {
-	inum++;
 	pio_write_32(&irqc->regs->clear, (1 << inum));
 }
@@ -71,7 +73,5 @@
 	    GRLIB_IRQMP_MASK_OFFSET);
 	
-	src++;
 	mask &= ~(1 << src);
-	
 	pio_write_32((void *) irqc->regs + GRLIB_IRQMP_MASK_OFFSET, mask);
 }
@@ -82,7 +82,5 @@
 	    GRLIB_IRQMP_MASK_OFFSET);
 	
-	src++;
 	mask |= (1 << src);
-	
 	pio_write_32((void *) irqc->regs + GRLIB_IRQMP_MASK_OFFSET, mask);
 }
