Index: libc/arch/ia64/src/entry.s
===================================================================
--- libc/arch/ia64/src/entry.s	(revision fbd6f810551695e266448f9cbc2ca84be4bcaeeb)
+++ libc/arch/ia64/src/entry.s	(revision 4a8ed8af85e2dfbf6c88e954ec6cc005ffee10ab)
@@ -37,6 +37,7 @@
 #
 __entry:
-	br.call.sptk.many b0 = main
-	br.call.sptk.many b0 = __exit
+	mov r1 = __entry
+	{ br.call.sptk.many b0 = main }
+	{ br.call.sptk.many b0 = __exit }
 	
 .end __entry
Index: libc/arch/ia64/src/syscall.c
===================================================================
--- libc/arch/ia64/src/syscall.c	(revision fbd6f810551695e266448f9cbc2ca84be4bcaeeb)
+++ libc/arch/ia64/src/syscall.c	(revision 4a8ed8af85e2dfbf6c88e954ec6cc005ffee10ab)
@@ -29,4 +29,14 @@
 #include <libc.h>
 
+/**
+ * Immediate operand for break instruction.
+ * Be carefull about the value as Ski simulator
+ * is somewhat sensitive to its value.
+ *
+ * 0 will be confused with Ski breakpoint.
+ * And higher values will be confused with SSC's.
+ */
+#define SYSCALL_IMM	1
+
 sysarg_t __syscall(const syscall_t id, const sysarg_t p1, const sysarg_t p2, const sysarg_t p3)
 {
@@ -38,8 +48,8 @@
 		"mov r16 = %3\n"
 		"mov r17 = %4\n"
-		"break 0\n"
+		"break %5\n"
 		"mov %0 = r8\n"
 		: "=r" (ret)
-		: "r" (id), "r" (p1), "r" (p2), "r" (p3)
+		: "r" (id), "r" (p1), "r" (p2), "r" (p3), "i" (SYSCALL_IMM)
 		: "r8", "r14", "r15", "r16"
 	);
