Index: generic/src/syscall/syscall.c
===================================================================
--- generic/src/syscall/syscall.c	(revision 7ca8b36b2dc6cb2925ae421b90060d16fd60a84a)
+++ generic/src/syscall/syscall.c	(revision 3de6dd7a4839361e603eef18d218d6b8fd8419a9)
@@ -48,13 +48,31 @@
 #include <sysinfo/sysinfo.h>
 
+/** Print using kernel facility
+ *
+ * Some simulators can print only through kernel. Userspace can use
+ * this syscall to facilitate it.
+ */
 static __native sys_io(int fd, const void * buf, size_t count) 
 {
-//	return count; /*Syscall deprecated*/
-	// TODO: buf sanity checks and a lot of other stuff ...
+	size_t i;
+	char *data;
+	int rc;
 
-	size_t i;
+	if (count > PAGE_SIZE)
+		return ELIMIT;
+
+	data = malloc(count, 0);
+	if (!data)
+		return ENOMEM;
 	
+	rc = copy_from_uspace(data, buf, count);
+	if (rc) {
+		free(data);
+		return rc;
+	}
+
 	for (i = 0; i < count; i++)
-		putchar(((char *) buf)[i]);
+		putchar(data[i]);
+	free(data);
 	
 	return count;
