Index: kernel/genarch/src/drivers/grlib_irqmp/grlib_irqmp.c
===================================================================
--- kernel/genarch/src/drivers/grlib_irqmp/grlib_irqmp.c	(revision 4d2dba7fbc2d5f64befb5898859b0ed4ea88adf4)
+++ kernel/genarch/src/drivers/grlib_irqmp/grlib_irqmp.c	(revision 9426f7c42b317a72ead25a5501beee4cae37427e)
@@ -45,6 +45,8 @@
 	    PAGE_NOT_CACHEABLE);
 
+	printf("irqmp regs: %p\n", irqc->regs);
+
 	/* Mask all interrupts */
-	pio_write_32((void *)&irqc->regs + GRLIB_IRQMP_MASK_OFFSET, 0);
+	pio_write_32((void *)irqc->regs + GRLIB_IRQMP_MASK_OFFSET, 0);
 }
 
@@ -64,4 +66,5 @@
 void grlib_irqmp_clear(grlib_irqmp_t *irqc, int inum)
 {
+	inum++;
 	pio_write_32(&irqc->regs->clear, (1 << inum));
 }
@@ -69,18 +72,20 @@
 void grlib_irqmp_mask(grlib_irqmp_t *irqc, int src)
 {
-	uint32_t mask = pio_read_32((void *)&irqc->regs + GRLIB_IRQMP_MASK_OFFSET);
+	uint32_t mask = pio_read_32((void *)irqc->regs + GRLIB_IRQMP_MASK_OFFSET);
 
+	src++;
 	mask &= ~(1 << src);
 
-	pio_write_32((void *)&irqc->regs + GRLIB_IRQMP_MASK_OFFSET, mask);
+	pio_write_32((void *)irqc->regs + GRLIB_IRQMP_MASK_OFFSET, mask);
 }
 
 void grlib_irqmp_unmask(grlib_irqmp_t *irqc, int src)
 {
-	uint32_t mask = pio_read_32((void *)&irqc->regs + GRLIB_IRQMP_MASK_OFFSET);
+	uint32_t mask = pio_read_32((void *)irqc->regs + GRLIB_IRQMP_MASK_OFFSET);
 
+	src++;
 	mask |= (1 << src);
 
-	pio_write_32((void *)&irqc->regs + GRLIB_IRQMP_MASK_OFFSET, mask);
+	pio_write_32((void *)irqc->regs + GRLIB_IRQMP_MASK_OFFSET, mask);
 }
 
Index: kernel/genarch/src/drivers/grlib_uart/grlib_uart.c
===================================================================
--- kernel/genarch/src/drivers/grlib_uart/grlib_uart.c	(revision 4d2dba7fbc2d5f64befb5898859b0ed4ea88adf4)
+++ kernel/genarch/src/drivers/grlib_uart/grlib_uart.c	(revision 9426f7c42b317a72ead25a5501beee4cae37427e)
@@ -109,4 +109,6 @@
 outdev_t *grlib_uart_init(uintptr_t paddr, inr_t inr)
 {
+	printf("grlib_uart_init: paddr=0x%08x\n", paddr);
+
 	outdev_t *uart_dev = malloc(sizeof(outdev_t), FRAME_ATOMIC);
 	if (!uart_dev)
