Index: uspace/lib/c/generic/irq.c
===================================================================
--- uspace/lib/c/generic/irq.c	(revision 8a64320e304a59746f5987caeba986e6baf11dd7)
+++ uspace/lib/c/generic/irq.c	(revision 06839924fc857d2f207b42b53527b04121ef63a5)
@@ -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 8a64320e304a59746f5987caeba986e6baf11dd7)
+++ uspace/lib/drv/generic/interrupt.c	(revision 06839924fc857d2f207b42b53527b04121ef63a5)
@@ -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)
