Index: arch/ia64/src/putchar.c
===================================================================
--- arch/ia64/src/putchar.c	(revision 2a0047fcb720d09f996a192519ef268a7c44731a)
+++ arch/ia64/src/putchar.c	(revision 2217ac34c226498d3ab724730de0fb6fa4beda69)
@@ -29,6 +29,17 @@
 #include <putchar.h>
 #include <arch/types.h>
+#include <arch/ski/ski.h>
 
 void putchar(char ch)
 {
+	__asm__ (
+		"mov r15=%0\n"
+		"mov r32=%1\n"		/* r32 is in0 */
+		"break 0x80000\n"	/* modifies r8 */
+		:
+		: "i" (SKI_CONSOLE_PUTC), "r" (ch)
+		: "r15", "in0", "r8"
+	);
+	
+	if (ch == '\n') putchar('\r');
 }
Index: arch/ia64/src/start.S
===================================================================
--- arch/ia64/src/start.S	(revision 2a0047fcb720d09f996a192519ef268a7c44731a)
+++ arch/ia64/src/start.S	(revision 2217ac34c226498d3ab724730de0fb6fa4beda69)
@@ -33,16 +33,16 @@
 .global kernel_image_start
 
+stack0:
 kernel_image_start:
 	# initialize gp (Global Pointer) register
-	mov r1=0x1000
+	mov r1=kernel_image_start;
 
-	# initialize Ski console using SSC (Simulator System Sall)
+	# set stack pointer to some sane value
+	mov r12=stack0
+	
+	# initialize Ski console using SSC (Simulator System Call)
 	mov r15=SKI_CONSOLE_INIT
 	break 0x80000
 
 0:
-	mov r15=SKI_CONSOLE_PUTC
-	mov r32='.'
-	break 0x80000
-
 	br 0b
