Index: generic/include/ipc/ipc.h
===================================================================
--- generic/include/ipc/ipc.h	(revision 7c7aae1655a7653ed95980918529a6c78e15b376)
+++ generic/include/ipc/ipc.h	(revision 9a68b34d997aee7a6bb46e96ef6da51cb260bcaf)
@@ -44,4 +44,5 @@
 #define IPC_CALL_FORWARDED      (1<<3) /* Call was forwarded */
 #define IPC_CALL_CONN_ME_TO     (1<<4) /* Identify connect_me_to */
+#define IPC_CALL_NOTIF          (1<<5) /* Interrupt notification */
 
 /* Flags for ipc_wait_for_call */
@@ -120,4 +121,6 @@
  */
 #define IPC_M_PHONE_HUNGUP      3
+/** Interrupt notification */
+#define IPC_M_INTERRUPT         4
 
 
@@ -155,4 +158,7 @@
 
 	link_t answers;          /**< Answered calls */
+
+	SPINLOCK_DECLARE(irq_lock);
+	link_t irq_notifs;       /**< Notifications from IRQ handlers */
 };
 
@@ -196,5 +202,5 @@
 extern void ipc_phone_connect(phone_t *phone, answerbox_t *box);
 extern void ipc_call_free(call_t *call);
-extern call_t * ipc_call_alloc(void);
+extern call_t * ipc_call_alloc(int flags);
 extern void ipc_answerbox_init(answerbox_t *box);
 extern void ipc_call_static_init(call_t *call);
@@ -205,4 +211,9 @@
 extern void ipc_backsend_err(phone_t *phone, call_t *call, __native err);
 
+extern int ipc_irq_register(answerbox_t *box, int irq);
+extern void ipc_irq_send_notif(int irq);
+extern void ipc_irq_unregister(answerbox_t *box, int irq);
+
+
 extern answerbox_t *ipc_phone_0;
 
Index: generic/include/ipc/sysipc.h
===================================================================
--- generic/include/ipc/sysipc.h	(revision 7c7aae1655a7653ed95980918529a6c78e15b376)
+++ generic/include/ipc/sysipc.h	(revision 9a68b34d997aee7a6bb46e96ef6da51cb260bcaf)
@@ -30,4 +30,6 @@
 #define __SYSIPC_H__
 
+#include <ipc/ipc.h>
+
 __native sys_ipc_call_sync_fast(__native phoneid, __native method, 
 				__native arg1, ipc_data_t *data);
@@ -44,5 +46,8 @@
 			      __native method, __native arg1);
 __native sys_ipc_hangup(int phoneid);
+__native sys_ipc_register_irq(__native irq);
+__native sys_ipc_unregister_irq(__native irq);
 
+void irq_ipc_bind_arch(__native irq);
 
 #endif
