Index: kernel/generic/include/ddi/ddi.h
===================================================================
--- kernel/generic/include/ddi/ddi.h	(revision f173404146b4afb7af15c0a9783566536346757a)
+++ kernel/generic/include/ddi/ddi.h	(revision a32defadb7bdc01eed96b5df1ab80f7b95365eb1)
@@ -56,4 +56,5 @@
 extern unative_t sys_iospace_enable(ddi_ioarg_t *uspace_io_arg);
 extern unative_t sys_preempt_control(int enable);
+extern unative_t sys_interrupt_enable(int irq, int enable);
 
 /*
@@ -62,4 +63,5 @@
 extern int ddi_iospace_enable_arch(task_t *task, uintptr_t ioaddr, size_t size);
 
+
 #endif
 
Index: kernel/generic/include/syscall/syscall.h
===================================================================
--- kernel/generic/include/syscall/syscall.h	(revision f173404146b4afb7af15c0a9783566536346757a)
+++ kernel/generic/include/syscall/syscall.h	(revision a32defadb7bdc01eed96b5df1ab80f7b95365eb1)
@@ -81,4 +81,5 @@
 	SYS_IOSPACE_ENABLE,
 	SYS_PREEMPT_CONTROL,
+	SYS_INTERRUPT_ENABLE,
 	
 	SYS_SYSINFO_GET_TAG,
Index: kernel/generic/src/ddi/ddi.c
===================================================================
--- kernel/generic/src/ddi/ddi.c	(revision f173404146b4afb7af15c0a9783566536346757a)
+++ kernel/generic/src/ddi/ddi.c	(revision a32defadb7bdc01eed96b5df1ab80f7b95365eb1)
@@ -283,4 +283,31 @@
 }
 
+/** Disable or enable specified interrupts.
+ * 
+ * @param irq the interrupt to be enabled/disabled.
+ * @param enable if true enable the interrupt, disable otherwise.
+ * 
+ * @retutn Zero on success, error code otherwise.
+ */
+unative_t sys_interrupt_enable(int irq, int enable)
+{	
+	cap_t task_cap = cap_get(TASK);
+	if (!(task_cap & CAP_PREEMPT_CONTROL) || !(task_cap & CAP_IRQ_REG))
+		return EPERM;
+		
+	if (irq < 0 || irq > 16) {
+		return EINVAL;
+	}
+	
+	uint16_t irq_mask = (uint16_t)(1 << irq);
+	if (enable) {
+		trap_virtual_enable_irqs(irq_mask);
+	} else {
+		trap_virtual_disable_irqs(irq_mask);
+	}
+	
+	return 0;	
+}
+
 /** @}
  */
Index: kernel/generic/src/ipc/irq.c
===================================================================
--- kernel/generic/src/ipc/irq.c	(revision f173404146b4afb7af15c0a9783566536346757a)
+++ kernel/generic/src/ipc/irq.c	(revision a32defadb7bdc01eed96b5df1ab80f7b95365eb1)
@@ -149,4 +149,6 @@
 		(unative_t) devno
 	};
+	
+	printf("kernel ipc_irq_register() ... registering irq = %d\n", inr);
 	
 	if (ucode) {
@@ -202,4 +204,7 @@
 	
 	interrupts_restore(ipl);
+	
+	printf("kernel ipc_irq_register() ... registering irq = %d was successful \n", inr);
+
 	return EOK;
 }
Index: kernel/generic/src/syscall/syscall.c
===================================================================
--- kernel/generic/src/syscall/syscall.c	(revision f173404146b4afb7af15c0a9783566536346757a)
+++ kernel/generic/src/syscall/syscall.c	(revision a32defadb7bdc01eed96b5df1ab80f7b95365eb1)
@@ -166,4 +166,5 @@
 	(syshandler_t) sys_iospace_enable,
 	(syshandler_t) sys_preempt_control,
+	(syshandler_t) sys_interrupt_enable,
 	
 	/* Sysinfo syscalls */
