Index: xen-ia64-unstable-14854/linux-2.6-xen-sparse/arch/ia64/kernel/relocate_kernel.S
===================================================================
--- xen-ia64-unstable-14854.orig/linux-2.6-xen-sparse/arch/ia64/kernel/relocate_kernel.S	2007-04-17 11:36:15.000000000 +0900
+++ xen-ia64-unstable-14854/linux-2.6-xen-sparse/arch/ia64/kernel/relocate_kernel.S	2007-04-17 11:44:02.000000000 +0900
@@ -20,7 +20,11 @@
         */
 GLOBAL_ENTRY(relocate_new_kernel)
 	.prologue
+#ifdef CONFIG_XEN
+	alloc r31=ar.pfs,7,0,0,0
+#else
 	alloc r31=ar.pfs,4,0,0,0
+#endif
         .body
 .reloc_entry:
 {
@@ -33,7 +37,11 @@ GLOBAL_ENTRY(relocate_new_kernel)
         srlz.i
 }
 	;;
+#ifdef CONFIG_XEN
+	dep r2=0,r2,60,4		//to physical address
+#else
 	dep r2=0,r2,61,3		//to physical address
+#endif
 	;;
 	//first switch to physical mode
 	add r3=1f-.reloc_entry, r2
@@ -57,11 +65,19 @@ GLOBAL_ENTRY(relocate_new_kernel)
 1:
 	//physical mode code begin
 	mov b6=in1
+#ifdef CONFIG_XEN
+	dep r28=0,in2,60,4	//to physical address
+#else
 	dep r28=0,in2,61,3	//to physical address
+#endif
 
 	// purge all TC entries
 #define O(member)       IA64_CPUINFO_##member##_OFFSET
+#ifdef CONFIG_XEN
+	mov r2=in4			// load phys addr of cpu_info into r2
+#else
         GET_THIS_PADDR(r2, cpu_info)    // load phys addr of cpu_info into r2
+#endif
         ;;
         addl r17=O(PTCE_STRIDE),r2
         addl r2=O(PTCE_BASE),r2
@@ -95,7 +111,11 @@ GLOBAL_ENTRY(relocate_new_kernel)
         srlz.i
         ;;
 	//purge TR entry for kernel text and data
+#ifdef CONFIG_XEN
+        mov r16=in5
+#else
         movl r16=KERNEL_START
+#endif
         mov r18=KERNEL_TR_PAGE_SHIFT<<2
         ;;
         ptr.i r16, r18
@@ -126,7 +146,11 @@ GLOBAL_ENTRY(relocate_new_kernel)
         mov r16=IA64_KR(CURRENT_STACK)
         ;;
         shl r16=r16,IA64_GRANULE_SHIFT
+#ifdef CONFIG_XEN
+	mov r19=in6
+#else
         movl r19=PAGE_OFFSET
+#endif
         ;;
         add r16=r19,r16
         mov r18=IA64_GRANULE_SHIFT<<2
@@ -183,10 +207,18 @@ GLOBAL_ENTRY(relocate_new_kernel)
 
 .align  32
 memory_stack:
+#ifdef CONFIG_XEN
+	.fill           4096, 1, 0
+#else
 	.fill           8192, 1, 0
+#endif
 memory_stack_end:
 register_stack:
+#ifdef CONFIG_XEN
+	.fill           4096, 1, 0
+#else
 	.fill           8192, 1, 0
+#endif
 register_stack_end:
 relocate_new_kernel_end:
 END(relocate_new_kernel)
