Index: arch/ia64/include/context.h
===================================================================
--- arch/ia64/include/context.h	(revision eb436797a05ddb2e8f632c19f915e9e96978e088)
+++ arch/ia64/include/context.h	(revision 7f1bfceb9210d208482652a9028d8dc7c11acd79)
@@ -31,4 +31,6 @@
 
 #include <arch/types.h>
+
+#define SP_DELTA	16
 
 struct context {
Index: arch/ia64/src/asm.S
===================================================================
--- arch/ia64/src/asm.S	(revision eb436797a05ddb2e8f632c19f915e9e96978e088)
+++ arch/ia64/src/asm.S	(revision 7f1bfceb9210d208482652a9028d8dc7c11acd79)
@@ -39,2 +39,6 @@
 		
 	br _memcopy
+
+.global memcopy
+memcopy:
+	br _memcopy
Index: arch/ia64/src/start.S
===================================================================
--- arch/ia64/src/start.S	(revision eb436797a05ddb2e8f632c19f915e9e96978e088)
+++ arch/ia64/src/start.S	(revision 7f1bfceb9210d208482652a9028d8dc7c11acd79)
@@ -35,9 +35,16 @@
 stack0:
 kernel_image_start:
+	.auto
+	# initialize PSR
+	mov psr.l = r0
+	
 	# initialize register stack
-	alloc r1 = ar.pfs, 0, 0, 0, 0	;;
+	mov ar.rsc = r0
+	loadrs
 
+	.explicit
 	# initialize memory stack to some sane value
-	movl r12=stack0
+	movl r12 = stack0	;;
+	add r12 = - 16, r12	/* allocate a scratch area on the stack */
 
 	# initialize gp (Global Pointer) register
