Index: xen-unstable.hg/xen/arch/ia64/xen/xenasm.S
===================================================================
--- xen-unstable.hg.orig/xen/arch/ia64/xen/xenasm.S	2008-01-15 11:56:17.000000000 +0900
+++ xen-unstable.hg/xen/arch/ia64/xen/xenasm.S	2008-01-15 12:02:02.000000000 +0900
@@ -81,7 +81,13 @@ GLOBAL_ENTRY(ia64_new_rr7)
 	movl r17=KERNEL_START
 	;;
 	ptr.i	r17,r24
+	;;
 	ptr.d	r17,r24
+	;;
+	srlz.d
+	;;
+	srlz.i
+	;;
 	mov r16=IA64_TR_KERNEL
 	mov cr.itir=r24
 	mov cr.ifa=r17
@@ -90,6 +96,11 @@ GLOBAL_ENTRY(ia64_new_rr7)
 	itr.i itr[r16]=r18
 	;; 
 	itr.d dtr[r16]=r18
+	;;
+	srlz.d
+	;;
+	srlz.i
+	;;
 
 	// re-pin mappings for stack (current)
 
@@ -102,12 +113,18 @@ GLOBAL_ENTRY(ia64_new_rr7)
 	dep r21=0,r13,60,4		// physical address of "current"
 	;;
 	ptr.d	r13,r25
+	;;
+	srlz.d
+	;;
 	or r23=r21,r26			// construct PA | page properties
 	mov cr.itir=r25
 	mov cr.ifa=r13			// VA of next task...
 	mov r21=IA64_TR_CURRENT_STACK
 	;;
 	itr.d dtr[r21]=r23		// wire in new mapping...
+	;;
+	srlz.d
+	;;
 
 	//  Per-cpu	
 .stack_overlaps:
@@ -115,12 +132,18 @@ GLOBAL_ENTRY(ia64_new_rr7)
 	movl r22=PERCPU_ADDR
 	;;
 	ptr.d	r22,r24
+	;;
+	srlz.d
+	;;
 	or r23=loc2,r26			// construct PA | page properties
 	mov cr.itir=r24
 	mov cr.ifa=r22
 	mov r25=IA64_TR_PERCPU_DATA
 	;;
 	itr.d dtr[r25]=r23		// wire in new mapping...
+	;;
+	srlz.d
+	;;
 
 	// VHPT
 #if VHPT_ENABLED
@@ -142,12 +165,17 @@ GLOBAL_ENTRY(ia64_new_rr7)
 	mov r24=IA64_GRANULE_SHIFT<<2
 	;;
 	ptr.d	r15,r24
+	;;
+	srlz.d
+	;;
 	or r23=r22,r26			// construct PA | page properties
 	mov cr.itir=r24
 	mov cr.ifa=r15
-	srlz.d
 	;;
 	itr.d dtr[r21]=r23		// wire in new mapping...
+	;;
+	srlz.d
+	;;
 .vhpt_overlaps:	
 #endif
 
@@ -156,12 +184,18 @@ GLOBAL_ENTRY(ia64_new_rr7)
 	movl r25=__pgprot(__DIRTY_BITS | _PAGE_PL_PRIV | _PAGE_AR_RW)
 	;;
 	ptr.d	in3,r24
+	;;
+	srlz.d
+	;;
 	or r23=in1,r25			// construct PA | page properties
 	mov cr.itir=r24
 	mov cr.ifa=in3
 	mov r21=IA64_TR_SHARED_INFO
 	;;
 	itr.d dtr[r21]=r23		// wire in new mapping...
+	;;
+	srlz.d
+	;;
 	
 	// Map mapped_regs
 	mov r22=XMAPPEDREGS_OFS
@@ -170,12 +204,18 @@ GLOBAL_ENTRY(ia64_new_rr7)
 	add r22=r22,in3
 	;;
 	ptr.d	r22,r24
+	;;
+	srlz.d
+	;;
 	or r23=loc7,r25			// construct PA | page properties
 	mov cr.itir=r24
 	mov cr.ifa=r22
 	mov r21=IA64_TR_MAPPED_REGS
 	;;
 	itr.d dtr[r21]=r23		// wire in new mapping...
+	;;
+	srlz.d
+	;;
 
 	// Purge/insert PAL TR
 	mov r24=IA64_TR_PALCODE
@@ -183,11 +223,17 @@ GLOBAL_ENTRY(ia64_new_rr7)
 	dep r25=0,loc5,60,4		// convert pal vaddr to paddr
 	;;
 	ptr.i	loc5,r23
+	;;
+	srlz.i
+	;;
 	or r25=r25,r26			// construct PA | page properties
 	mov cr.itir=r23
 	mov cr.ifa=loc5
 	;;
 	itr.i itr[r24]=r25
+	;;
+	srlz.i
+	;;
 
 	// done, switch back to virtual and return
 	mov r16=loc3			// r16= original psr
