Index: generic/include/ddi/ddi.h
===================================================================
--- generic/include/ddi/ddi.h	(revision 9a8d91b75a1fd931c8f781ec517362f92ed670d3)
+++ generic/include/ddi/ddi.h	(revision 50de918ee03e2d69dce7bc2641ba60d65d2fcbf7)
@@ -32,6 +32,13 @@
 #include <ddi/ddi_arg.h>
 #include <arch/types.h>
+#include <typedefs.h>
 
-extern __native sys_map_physmem(ddi_arg_t *uspace_ddi_arg);
+extern __native sys_map_physmem(ddi_memarg_t *uspace_mem_arg);
+extern __native sys_enable_iospace(ddi_ioarg_t *uspace_io_arg);
+
+/*
+ * Interface to be implemented by all architectures.
+ */
+extern int ddi_enable_iospace_arch(task_t *task, __address ioaddr, size_t size);
 
 #endif
Index: generic/include/ddi/ddi_arg.h
===================================================================
--- generic/include/ddi/ddi_arg.h	(revision 9a8d91b75a1fd931c8f781ec517362f92ed670d3)
+++ generic/include/ddi/ddi_arg.h	(revision 50de918ee03e2d69dce7bc2641ba60d65d2fcbf7)
@@ -37,5 +37,12 @@
 	unsigned long pages;		/** Number of pages to map. */
 	int writable;			/** True if the mapping should be writable. */
-} ddi_arg_t;
+} ddi_memarg_t;
+
+/** Structure encapsulating arguments for SYS_ENABLE_IOSPACE syscall. */
+typedef struct {
+	unsigned long long task_id;	/** ID of the destination task. */
+	void *ioaddr;			/** Starting I/O space address. */
+	unsigned long size;		/** Number of bytes. */
+} ddi_ioarg_t;
 
 #endif
