Index: generic/include/ddi/ddi.h
===================================================================
--- generic/include/ddi/ddi.h	(revision 68091bdbde5f024c9fe32f6a32b8a6cbd415a620)
+++ generic/include/ddi/ddi.h	(revision e692a27a94144915c2caeadca44e573b14cf107b)
@@ -40,4 +40,6 @@
  * Interface to be implemented by all architectures.
  */
+extern __native ddi_int_control_arch(__native enable, __native *flags);
+extern __native ddi_int_control(__native enable, __native *flags);
 extern int ddi_enable_iospace_arch(task_t *task, __address ioaddr, size_t size);
 
Index: generic/include/security/cap.h
===================================================================
--- generic/include/security/cap.h	(revision 68091bdbde5f024c9fe32f6a32b8a6cbd415a620)
+++ generic/include/security/cap.h	(revision e692a27a94144915c2caeadca44e573b14cf107b)
@@ -58,4 +58,9 @@
 #define CAP_IO_MANAGER		(1<<2)
 
+/**
+ * CAP_INT_CONTROL allows its holder to disable interrupts
+ */
+#define CAP_INT_CONTROL         (1<<3)
+
 typedef __u32 cap_t;
 
Index: generic/include/syscall/syscall.h
===================================================================
--- generic/include/syscall/syscall.h	(revision 68091bdbde5f024c9fe32f6a32b8a6cbd415a620)
+++ generic/include/syscall/syscall.h	(revision e692a27a94144915c2caeadca44e573b14cf107b)
@@ -33,4 +33,5 @@
 	SYS_IO = 0,
 	SYS_TLS_SET = 1, /* Hardcoded in AMD64,IA32 uspace - psthread.S */
+	SYS_INT_CONTROL = 2, /* Hardcoded in all SYSCALL handlers */
 	SYS_THREAD_CREATE,
 	SYS_THREAD_EXIT,
Index: generic/src/ddi/ddi.c
===================================================================
--- generic/src/ddi/ddi.c	(revision 68091bdbde5f024c9fe32f6a32b8a6cbd415a620)
+++ generic/src/ddi/ddi.c	(revision e692a27a94144915c2caeadca44e573b14cf107b)
@@ -195,2 +195,10 @@
 	return (__native) ddi_enable_iospace((task_id_t) arg.task_id, (__address) arg.ioaddr, (size_t) arg.size);
 }
+
+__native ddi_int_control(__native enable, __native *flags)
+{
+	if (! cap_get(TASK) & CAP_INT_CONTROL)
+		return EPERM;
+	return ddi_int_control_arch(enable, flags);
+}
+
Index: generic/src/syscall/syscall.c
===================================================================
--- generic/src/syscall/syscall.c	(revision 68091bdbde5f024c9fe32f6a32b8a6cbd415a620)
+++ generic/src/syscall/syscall.c	(revision e692a27a94144915c2caeadca44e573b14cf107b)
@@ -65,4 +65,9 @@
 }
 
+static __native sys_int_control(int enable)
+{
+	panic("Not implemented.");
+}
+
 /** Dispatch system call */
 __native syscall_handler(__native a1, __native a2, __native a3,
@@ -78,4 +83,5 @@
 	sys_io,
 	sys_tls_set,
+	sys_int_control,
 	sys_thread_create,
 	sys_thread_exit,
