Index: arch/ia64/src/ski/ski.c
===================================================================
--- arch/ia64/src/ski/ski.c	(revision 085434aa44aed066803577be18124785944a0f49)
+++ arch/ia64/src/ski/ski.c	(revision 4a2b52ff4fbc7a2272782d2183f8358003e7c20f)
@@ -47,5 +47,5 @@
 void ski_putchar(chardev_t *d, const char ch)
 {
-	__asm__ (
+	__asm__ volatile (
 		"mov r15=%0\n"
 		"mov r32=%1\n"		/* r32 is in0 */
@@ -73,5 +73,5 @@
 	__u64 ch;
 	
-	__asm__ (
+	__asm__ volatile (
 		"mov r15=%1\n"
 		"break 0x80000;;\n"	/* modifies r8 */
@@ -85,4 +85,17 @@
 	return (__s32) ch;
 }
+
+/**
+	This is blocking wrap function of ski_getchar
+	It active waits ... for using with non-stable kernel 
+*/
+static char ski_getchar_blocking(chardev_t *d)
+{
+	volatile int ch;
+	while(!(ch=ski_getchar()));
+	if(ch == '\r') ch = '\n'; 
+	return (char) ch;
+}
+
 
 /** Ask keyboard if a key was pressed. */
@@ -117,5 +130,6 @@
 	.resume = ski_kb_enable,
 	.suspend = ski_kb_disable,
-	.write = ski_putchar
+	.write = ski_putchar,
+	.read = ski_getchar_blocking
 };
 
@@ -128,5 +142,5 @@
 void ski_init_console(void)
 {
-	__asm__ (
+	__asm__ volatile (
 		"mov r15=%0\n"
 		"break 0x80000\n"
