Index: uspace/lib/c/arch/abs32le/include/ddi.h
===================================================================
--- uspace/lib/c/arch/abs32le/include/ddi.h	(revision 0f323d30795a087aa2dc11c185f6ebcc4a4dc506)
+++ uspace/lib/c/arch/abs32le/include/ddi.h	(revision 32186484f4f5808dccfde6e81e49e0d997ddb762)
@@ -36,30 +36,30 @@
 #include <libarch/types.h>
 
-static inline void pio_write_8(ioport8_t *port, uint8_t v)
+static inline void arch_pio_write_8(ioport8_t *port, uint8_t v)
 {
 	*port = v;
 }
 
-static inline void pio_write_16(ioport16_t *port, uint16_t v)
+static inline void arch_pio_write_16(ioport16_t *port, uint16_t v)
 {
 	*port = v;
 }
 
-static inline void pio_write_32(ioport32_t *port, uint32_t v)
+static inline void arch_pio_write_32(ioport32_t *port, uint32_t v)
 {
 	*port = v;
 }
 
-static inline uint8_t pio_read_8(ioport8_t *port)
+static inline uint8_t arch_pio_read_8(ioport8_t *port)
 {
 	return *port;
 }
 
-static inline uint16_t pio_read_16(ioport16_t *port)
+static inline uint16_t arch_pio_read_16(ioport16_t *port)
 {
 	return *port;
 }
 
-static inline uint32_t pio_read_32(ioport32_t *port)
+static inline uint32_t arch_pio_read_32(ioport32_t *port)
 {
 	return *port;
Index: uspace/lib/c/arch/arm32/include/ddi.h
===================================================================
--- uspace/lib/c/arch/arm32/include/ddi.h	(revision 0f323d30795a087aa2dc11c185f6ebcc4a4dc506)
+++ uspace/lib/c/arch/arm32/include/ddi.h	(revision 32186484f4f5808dccfde6e81e49e0d997ddb762)
@@ -37,30 +37,30 @@
 #include <libarch/types.h>
 
-static inline void pio_write_8(ioport8_t *port, uint8_t v)
+static inline void arch_pio_write_8(ioport8_t *port, uint8_t v)
 {
 	*port = v;
 }
 
-static inline void pio_write_16(ioport16_t *port, uint16_t v)
+static inline void arch_pio_write_16(ioport16_t *port, uint16_t v)
 {
 	*port = v;
 }
 
-static inline void pio_write_32(ioport32_t *port, uint32_t v)
+static inline void arch_pio_write_32(ioport32_t *port, uint32_t v)
 {
 	*port = v;
 }
 
-static inline uint8_t pio_read_8(ioport8_t *port)
+static inline uint8_t arch_pio_read_8(ioport8_t *port)
 {
 	return *port;
 }
 
-static inline uint16_t pio_read_16(ioport16_t *port)
+static inline uint16_t arch_pio_read_16(ioport16_t *port)
 {
 	return *port;
 }
 
-static inline uint32_t pio_read_32(ioport32_t *port)
+static inline uint32_t arch_pio_read_32(ioport32_t *port)
 {
 	return *port;
Index: uspace/lib/c/arch/ia32/include/ddi.h
===================================================================
--- uspace/lib/c/arch/ia32/include/ddi.h	(revision 0f323d30795a087aa2dc11c185f6ebcc4a4dc506)
+++ uspace/lib/c/arch/ia32/include/ddi.h	(revision 32186484f4f5808dccfde6e81e49e0d997ddb762)
@@ -39,5 +39,5 @@
 #define IO_SPACE_BOUNDARY  ((void *) (64 * 1024))
 
-static inline uint8_t pio_read_8(ioport8_t *port)
+static inline uint8_t arch_pio_read_8(ioport8_t *port)
 {
 	if (port < (ioport8_t *) IO_SPACE_BOUNDARY) {
@@ -55,5 +55,5 @@
 }
 
-static inline uint16_t pio_read_16(ioport16_t *port)
+static inline uint16_t arch_pio_read_16(ioport16_t *port)
 {
 	if (port < (ioport16_t *) IO_SPACE_BOUNDARY) {
@@ -71,5 +71,5 @@
 }
 
-static inline uint32_t pio_read_32(ioport32_t *port)
+static inline uint32_t arch_pio_read_32(ioport32_t *port)
 {
 	if (port < (ioport32_t *) IO_SPACE_BOUNDARY) {
@@ -87,5 +87,5 @@
 }
 
-static inline void pio_write_8(ioport8_t *port, uint8_t val)
+static inline void arch_pio_write_8(ioport8_t *port, uint8_t val)
 {
 	if (port < (ioport8_t *) IO_SPACE_BOUNDARY) {
@@ -98,5 +98,5 @@
 }
 
-static inline void pio_write_16(ioport16_t *port, uint16_t val)
+static inline void arch_pio_write_16(ioport16_t *port, uint16_t val)
 {
 	if (port < (ioport16_t *) IO_SPACE_BOUNDARY) {
@@ -109,5 +109,5 @@
 }
 
-static inline void pio_write_32(ioport32_t *port, uint32_t val)
+static inline void arch_pio_write_32(ioport32_t *port, uint32_t val)
 {
 	if (port < (ioport32_t *) IO_SPACE_BOUNDARY) {
Index: uspace/lib/c/arch/ia64/include/ddi.h
===================================================================
--- uspace/lib/c/arch/ia64/include/ddi.h	(revision 0f323d30795a087aa2dc11c185f6ebcc4a4dc506)
+++ uspace/lib/c/arch/ia64/include/ddi.h	(revision 32186484f4f5808dccfde6e81e49e0d997ddb762)
@@ -50,5 +50,5 @@
 	    (ia64_iospace_address = get_ia64_iospace_address()))
 
-static inline void pio_write_8(ioport8_t *port, uint8_t v)
+static inline void arch_pio_write_8(ioport8_t *port, uint8_t v)
 {
 	if (port < (ioport8_t *) IO_SPACE_BOUNDARY) {
@@ -65,5 +65,5 @@
 }
 
-static inline void pio_write_16(ioport16_t *port, uint16_t v)
+static inline void arch_pio_write_16(ioport16_t *port, uint16_t v)
 {
 	if (port < (ioport16_t *) IO_SPACE_BOUNDARY) {
@@ -80,5 +80,5 @@
 }
 
-static inline void pio_write_32(ioport32_t *port, uint32_t v)
+static inline void arch_pio_write_32(ioport32_t *port, uint32_t v)
 {
 	if (port < (ioport32_t *) IO_SPACE_BOUNDARY) {
@@ -95,5 +95,5 @@
 }
 
-static inline uint8_t pio_read_8(ioport8_t *port)
+static inline uint8_t arch_pio_read_8(ioport8_t *port)
 {
 	uint8_t v;
@@ -115,5 +115,5 @@
 }
 
-static inline uint16_t pio_read_16(ioport16_t *port)
+static inline uint16_t arch_pio_read_16(ioport16_t *port)
 {
 	uint16_t v;
@@ -135,5 +135,5 @@
 }
 
-static inline uint32_t pio_read_32(ioport32_t *port)
+static inline uint32_t arch_pio_read_32(ioport32_t *port)
 {
 	uint32_t v;
Index: uspace/lib/c/arch/mips32/include/ddi.h
===================================================================
--- uspace/lib/c/arch/mips32/include/ddi.h	(revision 0f323d30795a087aa2dc11c185f6ebcc4a4dc506)
+++ uspace/lib/c/arch/mips32/include/ddi.h	(revision 32186484f4f5808dccfde6e81e49e0d997ddb762)
@@ -37,30 +37,30 @@
 #include <libarch/types.h>
 
-static inline void pio_write_8(ioport8_t *port, uint8_t v)
+static inline void arch_pio_write_8(ioport8_t *port, uint8_t v)
 {
 	*port = v;
 }
 
-static inline void pio_write_16(ioport16_t *port, uint16_t v)
+static inline void arch_pio_write_16(ioport16_t *port, uint16_t v)
 {
 	*port = v;
 }
 
-static inline void pio_write_32(ioport32_t *port, uint32_t v)
+static inline void arch_pio_write_32(ioport32_t *port, uint32_t v)
 {
 	*port = v;
 }
 
-static inline uint8_t pio_read_8(ioport8_t *port)
+static inline uint8_t arch_pio_read_8(ioport8_t *port)
 {
 	return *port;
 }
 
-static inline uint16_t pio_read_16(ioport16_t *port)
+static inline uint16_t arch_pio_read_16(ioport16_t *port)
 {
 	return *port;
 }
 
-static inline uint32_t pio_read_32(ioport32_t *port)
+static inline uint32_t arch_pio_read_32(ioport32_t *port)
 {
 	return *port;
Index: uspace/lib/c/arch/mips64/include/ddi.h
===================================================================
--- uspace/lib/c/arch/mips64/include/ddi.h	(revision 0f323d30795a087aa2dc11c185f6ebcc4a4dc506)
+++ uspace/lib/c/arch/mips64/include/ddi.h	(revision 32186484f4f5808dccfde6e81e49e0d997ddb762)
@@ -37,30 +37,30 @@
 #include <libarch/types.h>
 
-static inline void pio_write_8(ioport8_t *port, uint8_t v)
+static inline void arch_pio_write_8(ioport8_t *port, uint8_t v)
 {
 	*port = v;
 }
 
-static inline void pio_write_16(ioport16_t *port, uint16_t v)
+static inline void arch_pio_write_16(ioport16_t *port, uint16_t v)
 {
 	*port = v;
 }
 
-static inline void pio_write_32(ioport32_t *port, uint32_t v)
+static inline void arch_pio_write_32(ioport32_t *port, uint32_t v)
 {
 	*port = v;
 }
 
-static inline uint8_t pio_read_8(ioport8_t *port)
+static inline uint8_t arch_pio_read_8(ioport8_t *port)
 {
 	return *port;
 }
 
-static inline uint16_t pio_read_16(ioport16_t *port)
+static inline uint16_t arch_pio_read_16(ioport16_t *port)
 {
 	return *port;
 }
 
-static inline uint32_t pio_read_32(ioport32_t *port)
+static inline uint32_t arch_pio_read_32(ioport32_t *port)
 {
 	return *port;
Index: uspace/lib/c/arch/ppc32/include/ddi.h
===================================================================
--- uspace/lib/c/arch/ppc32/include/ddi.h	(revision 0f323d30795a087aa2dc11c185f6ebcc4a4dc506)
+++ uspace/lib/c/arch/ppc32/include/ddi.h	(revision 32186484f4f5808dccfde6e81e49e0d997ddb762)
@@ -37,30 +37,30 @@
 #include <libarch/types.h>
 
-static inline void pio_write_8(ioport8_t *port, uint8_t v)
+static inline void arch_pio_write_8(ioport8_t *port, uint8_t v)
 {
 	*port = v;
 }
 
-static inline void pio_write_16(ioport16_t *port, uint16_t v)
+static inline void arch_pio_write_16(ioport16_t *port, uint16_t v)
 {
 	*port = v;
 }
 
-static inline void pio_write_32(ioport32_t *port, uint32_t v)
+static inline void arch_pio_write_32(ioport32_t *port, uint32_t v)
 {
 	*port = v;
 }
 
-static inline uint8_t pio_read_8(ioport8_t *port)
+static inline uint8_t arch_pio_read_8(ioport8_t *port)
 {
 	return *port;
 }
 
-static inline uint16_t pio_read_16(ioport16_t *port)
+static inline uint16_t arch_pio_read_16(ioport16_t *port)
 {
 	return *port;
 }
 
-static inline uint32_t pio_read_32(ioport32_t *port)
+static inline uint32_t arch_pio_read_32(ioport32_t *port)
 {
 	return *port;
Index: uspace/lib/c/arch/sparc64/include/ddi.h
===================================================================
--- uspace/lib/c/arch/sparc64/include/ddi.h	(revision 0f323d30795a087aa2dc11c185f6ebcc4a4dc506)
+++ uspace/lib/c/arch/sparc64/include/ddi.h	(revision 32186484f4f5808dccfde6e81e49e0d997ddb762)
@@ -45,5 +45,5 @@
 }
 
-static inline void pio_write_8(ioport8_t *port, uint8_t v)
+static inline void arch_pio_write_8(ioport8_t *port, uint8_t v)
 {
 	*port = v;
@@ -51,5 +51,5 @@
 }
 
-static inline void pio_write_16(ioport16_t *port, uint16_t v)
+static inline void arch_pio_write_16(ioport16_t *port, uint16_t v)
 {
 	*port = v;
@@ -57,5 +57,5 @@
 }
 
-static inline void pio_write_32(ioport32_t *port, uint32_t v)
+static inline void arch_pio_write_32(ioport32_t *port, uint32_t v)
 {
 	*port = v;
@@ -63,5 +63,5 @@
 }
 
-static inline uint8_t pio_read_8(ioport8_t *port)
+static inline uint8_t arch_pio_read_8(ioport8_t *port)
 {
 	uint8_t rv;
@@ -73,5 +73,5 @@
 }
 
-static inline uint16_t pio_read_16(ioport16_t *port)
+static inline uint16_t arch_pio_read_16(ioport16_t *port)
 {
 	uint16_t rv;
@@ -83,5 +83,5 @@
 }
 
-static inline uint32_t pio_read_32(ioport32_t *port)
+static inline uint32_t arch_pio_read_32(ioport32_t *port)
 {
 	uint32_t rv;
Index: uspace/lib/c/generic/ddi.c
===================================================================
--- uspace/lib/c/generic/ddi.c	(revision 0f323d30795a087aa2dc11c185f6ebcc4a4dc506)
+++ uspace/lib/c/generic/ddi.c	(revision 32186484f4f5808dccfde6e81e49e0d997ddb762)
@@ -169,4 +169,34 @@
 }
 
+void pio_write_8(ioport8_t *reg, uint8_t val)
+{
+	arch_pio_write_8(reg, val);
+}
+
+void pio_write_16(ioport16_t *reg, uint16_t val)
+{
+	arch_pio_write_16(reg, val);
+}
+
+void pio_write_32(ioport32_t *reg, uint32_t val)
+{
+	arch_pio_write_32(reg, val);
+}
+
+uint8_t pio_read_8(ioport8_t *reg)
+{
+	return arch_pio_read_8(reg);
+}
+
+uint16_t pio_read_16(ioport16_t *reg)
+{
+	return arch_pio_read_16(reg);
+}
+
+uint32_t pio_read_32(ioport32_t *reg)
+{
+	return arch_pio_read_32(reg);
+}
+
 /** Register IRQ notification.
  *
Index: uspace/lib/c/include/ddi.h
===================================================================
--- uspace/lib/c/include/ddi.h	(revision 0f323d30795a087aa2dc11c185f6ebcc4a4dc506)
+++ uspace/lib/c/include/ddi.h	(revision 32186484f4f5808dccfde6e81e49e0d997ddb762)
@@ -51,4 +51,11 @@
 
 extern int pio_enable(void *, size_t, void **);
+extern void pio_write_8(ioport8_t *, uint8_t);
+extern void pio_write_16(ioport16_t *, uint16_t);
+extern void pio_write_32(ioport32_t *, uint32_t);
+
+extern uint8_t pio_read_8(ioport8_t *);
+extern uint16_t pio_read_16(ioport16_t *);
+extern uint32_t pio_read_32(ioport32_t *);
 
 extern int irq_register(int, int, int, irq_code_t *);
