Index: kernel/generic/include/ddi/ddi.h
===================================================================
--- kernel/generic/include/ddi/ddi.h	(revision 2b698d86ef8bca30acb1f746e8a61eb544b07a12)
+++ kernel/generic/include/ddi/ddi.h	(revision 04cb68f2d06da3440e206ec4339c4d23afa3910a)
@@ -54,4 +54,5 @@
 extern unative_t sys_physmem_map(unative_t, unative_t, unative_t, unative_t);
 extern unative_t sys_iospace_enable(ddi_ioarg_t *);
+extern unative_t sys_interrupt_enable(int irq, int enable);
 
 /*
@@ -60,4 +61,5 @@
 extern int ddi_iospace_enable_arch(task_t *, uintptr_t, size_t);
 
+
 #endif
 
Index: kernel/generic/include/syscall/syscall.h
===================================================================
--- kernel/generic/include/syscall/syscall.h	(revision 2b698d86ef8bca30acb1f746e8a61eb544b07a12)
+++ kernel/generic/include/syscall/syscall.h	(revision 04cb68f2d06da3440e206ec4339c4d23afa3910a)
@@ -80,4 +80,5 @@
 	SYS_PHYSMEM_MAP,
 	SYS_IOSPACE_ENABLE,
+	SYS_INTERRUPT_ENABLE,
 	
 	SYS_SYSINFO_GET_TAG,
Index: kernel/generic/src/ddi/ddi.c
===================================================================
--- kernel/generic/src/ddi/ddi.c	(revision 2b698d86ef8bca30acb1f746e8a61eb544b07a12)
+++ kernel/generic/src/ddi/ddi.c	(revision 04cb68f2d06da3440e206ec4339c4d23afa3910a)
@@ -258,4 +258,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_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/syscall/syscall.c
===================================================================
--- kernel/generic/src/syscall/syscall.c	(revision 2b698d86ef8bca30acb1f746e8a61eb544b07a12)
+++ kernel/generic/src/syscall/syscall.c	(revision 04cb68f2d06da3440e206ec4339c4d23afa3910a)
@@ -159,4 +159,5 @@
 	(syshandler_t) sys_physmem_map,
 	(syshandler_t) sys_iospace_enable,
+	(syshandler_t) sys_interrupt_enable,
 	
 	/* Sysinfo syscalls */
