Index: uspace/drv/char/ns8250/ns8250.c
===================================================================
--- uspace/drv/char/ns8250/ns8250.c	(revision 6d81e1e2ef65508a818c096d2ce6e45ecfd61a8c)
+++ uspace/drv/char/ns8250/ns8250.c	(revision 7edfde96ace874a9c2308493e0c4724ca43463ab)
@@ -175,14 +175,4 @@
 	bool removed;
 } ns8250_t;
-
-static irq_cmd_t ns8250_irq_cmds[] = {
-	{ .cmd = CMD_ACCEPT }
-};
-
-static irq_code_t ns8250_irq_code = {
-	.rangecount = 0,
-	.cmdcount = sizeof(ns8250_irq_cmds) / sizeof(irq_cmd_t),
-	.cmds = ns8250_irq_cmds
-};
 
 /** Obtain soft-state structure from device node */
@@ -793,6 +783,4 @@
 }
 
-
-
 /** Register the interrupt handler for the device.
  *
@@ -802,5 +790,5 @@
 {
 	return register_interrupt_handler(ns->dev, ns->irq,
-	    ns8250_interrupt_handler, &ns8250_irq_code);
+	    ns8250_interrupt_handler, NULL);
 }
 
Index: uspace/lib/c/generic/irq.c
===================================================================
--- uspace/lib/c/generic/irq.c	(revision 6d81e1e2ef65508a818c096d2ce6e45ecfd61a8c)
+++ uspace/lib/c/generic/irq.c	(revision 7edfde96ace874a9c2308493e0c4724ca43463ab)
@@ -35,4 +35,19 @@
 #include <ipc/irq.h>
 #include <libc.h>
+#include <stdlib.h>
+#include <macros.h>
+
+static irq_cmd_t default_cmds[] = {
+	{
+		.cmd = CMD_ACCEPT
+	}
+};
+
+static const irq_code_t default_ucode = {
+	0,
+	NULL,
+	ARRAY_SIZE(default_cmds),
+	default_cmds
+};
 
 /** Subscribe to IRQ notification.
@@ -49,4 +64,7 @@
     const irq_code_t *ucode)
 {
+	if (ucode == NULL)
+		ucode = &default_ucode;
+	
 	return __SYSCALL4(SYS_IPC_IRQ_SUBSCRIBE, inr, devno, method,
 	    (sysarg_t) ucode);
Index: uspace/lib/drv/generic/interrupt.c
===================================================================
--- uspace/lib/drv/generic/interrupt.c	(revision 6d81e1e2ef65508a818c096d2ce6e45ecfd61a8c)
+++ uspace/lib/drv/generic/interrupt.c	(revision 7edfde96ace874a9c2308493e0c4724ca43463ab)
@@ -44,17 +44,4 @@
 #include "private/driver.h"
 
-static irq_cmd_t default_cmds[] = {
-	{
-		.cmd = CMD_ACCEPT
-	}
-};
-
-static const irq_code_t default_pseudocode = {
-	0,
-	NULL,
-	ARRAY_SIZE(default_cmds),
-	default_cmds
-};
-
 int register_interrupt_handler(ddf_dev_t *dev, int irq,
     interrupt_handler_t *handler, const irq_code_t *pseudocode)
