Index: uspace/kbd/arch/sparc64/src/kbd.c
===================================================================
--- uspace/kbd/arch/sparc64/src/kbd.c	(revision 57da95c482edb0cea2f17139f72f308e960ddd0f)
+++ uspace/kbd/arch/sparc64/src/kbd.c	(revision 2b017ba3f7b12c023121e41aca02b7d6bf2bdade)
@@ -59,5 +59,5 @@
 {
 	z8530_cmds[0].addr = (void *) sysinfo_value("kbd.address.virtual") + 6;
-	ipc_register_irq(sysinfo_value("kbd.irq"), &z8530_kbd);
+	ipc_register_irq(sysinfo_value("kbd.inr"), sysinfo_value("kbd.devno"), 0, &z8530_kbd);
 	return 0;
 }
Index: uspace/klog/klog.c
===================================================================
--- uspace/klog/klog.c	(revision 57da95c482edb0cea2f17139f72f308e960ddd0f)
+++ uspace/klog/klog.c	(revision 2b017ba3f7b12c023121e41aca02b7d6bf2bdade)
@@ -41,4 +41,5 @@
 #include <as.h>
 #include <kernel/ipc/irq.h>
+#include <sysinfo.h>
 
 /* Pointer to klog area */
@@ -73,5 +74,7 @@
 	klog = mapping;
 
-	if (ipc_register_irq(IPC_IRQ_KLOG, NULL)) {
+	int inr = sysinfo_value("klog.inr");
+	int devno = sysinfo_value("klog.devno");
+	if (ipc_register_irq(inr, devno, 0, NULL)) {
 		printf("Error registering for klog service.\n");
 		return 0;
Index: uspace/libc/generic/async.c
===================================================================
--- uspace/libc/generic/async.c	(revision 57da95c482edb0cea2f17139f72f308e960ddd0f)
+++ uspace/libc/generic/async.c	(revision 2b017ba3f7b12c023121e41aca02b7d6bf2bdade)
@@ -637,5 +637,5 @@
 
 	if (in_interrupt_handler) {
-		printf("Cannot send asynchronou request in interrupt handler.\n");
+		printf("Cannot send asynchronous request in interrupt handler.\n");
 		_exit(1);
 	}
@@ -663,5 +663,5 @@
 
 	if (in_interrupt_handler) {
-		printf("Cannot send asynchronou request in interrupt handler.\n");
+		printf("Cannot send asynchronous request in interrupt handler.\n");
 		_exit(1);
 	}
Index: uspace/libc/generic/ipc.c
===================================================================
--- uspace/libc/generic/ipc.c	(revision 57da95c482edb0cea2f17139f72f308e960ddd0f)
+++ uspace/libc/generic/ipc.c	(revision 2b017ba3f7b12c023121e41aca02b7d6bf2bdade)
@@ -450,12 +450,28 @@
 }
 
-int ipc_register_irq(int irq, irq_code_t *ucode)
-{
-	return __SYSCALL2(SYS_IPC_REGISTER_IRQ, irq, (sysarg_t) ucode);
-}
-
-int ipc_unregister_irq(int irq)
-{
-	return __SYSCALL1(SYS_IPC_UNREGISTER_IRQ, irq);
+/** Register IRQ notification.
+ *
+ * @param inr IRQ number.
+ * @param devno Device number of the device generating inr.
+ * @param method Use this method for notifying me.
+ * @param ucode Top-half pseudocode handler.
+ *
+ * @return Value returned by the kernel.
+ */
+int ipc_register_irq(int inr, int devno, int method, irq_code_t *ucode)
+{
+	return __SYSCALL4(SYS_IPC_REGISTER_IRQ, inr, devno, method, (sysarg_t) ucode);
+}
+
+/** Unregister IRQ notification.
+ *
+ * @param inr IRQ number.
+ * @param devno Device number of the device generating inr.
+ *
+ * @return Value returned by the kernel.
+ */
+int ipc_unregister_irq(int inr, int devno)
+{
+	return __SYSCALL2(SYS_IPC_UNREGISTER_IRQ, inr, devno);
 }
 
Index: uspace/libc/include/ipc/ipc.h
===================================================================
--- uspace/libc/include/ipc/ipc.h	(revision 57da95c482edb0cea2f17139f72f308e960ddd0f)
+++ uspace/libc/include/ipc/ipc.h	(revision 2b017ba3f7b12c023121e41aca02b7d6bf2bdade)
@@ -84,6 +84,6 @@
 extern int ipc_connect_me_to(int phoneid, int arg1, int arg2);
 extern int ipc_hangup(int phoneid);
-extern int ipc_register_irq(int irq, irq_code_t *code);
-extern int ipc_unregister_irq(int irq);
+extern int ipc_register_irq(int inr, int devno, int method, irq_code_t *code);
+extern int ipc_unregister_irq(int inr, int devno);
 extern int ipc_forward_fast(ipc_callid_t callid, int phoneid, int method, ipcarg_t arg1);
 
