Index: kernel/generic/src/ddi/ddi.c
===================================================================
--- kernel/generic/src/ddi/ddi.c	(revision 3b3e776c798388c535fed921aeb73f37a0268abd)
+++ kernel/generic/src/ddi/ddi.c	(revision f4ef3c2d00beac7711a88e05770f36ab0bc9411b)
@@ -287,4 +287,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/syscall/syscall.c
===================================================================
--- kernel/generic/src/syscall/syscall.c	(revision 3b3e776c798388c535fed921aeb73f37a0268abd)
+++ kernel/generic/src/syscall/syscall.c	(revision f4ef3c2d00beac7711a88e05770f36ab0bc9411b)
@@ -151,4 +151,5 @@
 	(syshandler_t) sys_iospace_enable,
 	(syshandler_t) sys_preempt_control,
+	(syshandler_t) sys_interrupt_enable,
 	
 	/* Sysinfo syscalls */
