--- a/arch/ia64/kvm/vtlb.c.orig	2013-03-03 16:37:27.000000000 +0100
+++ b/arch/ia64/kvm/vtlb.c	2013-03-03 16:42:33.000000000 +0100
@@ -246,27 +246,27 @@ u64 guest_vhpt_lookup(u64 iha, u64 *pte)
 	asm volatile ("rsm psr.ic|psr.i;;"
 			"srlz.d;;"
 			"ld8.s r9=[%1];;"
 			"tnat.nz p6,p7=r9;;"
 			"(p6) mov %0=1;"
 			"(p6) mov r9=r0;"
 			"(p7) extr.u r9=r9,0,53;;"
 			"(p7) mov %0=r0;"
 			"(p7) st8 [%2]=r9;;"
 			"ssm psr.ic;;"
 			"srlz.d;;"
 			"ssm psr.i;;"
 			"srlz.d;;"
-			: "=r"(ret) : "r"(iha), "r"(pte):"memory");
+			: "=&r"(ret) : "r"(iha), "r"(pte):"memory");
 
 	return ret;
 }
 
 /*
  *  purge software guest tlb
  */
 
 static void vtlb_purge(struct kvm_vcpu *v, u64 va, u64 ps)
 {
 	struct thash_data *cur;
 	u64 start, curadr, size, psbits, tag, rr_ps, num;
 	union ia64_rr vrr;

Signed-off-by: Stephan Schreiber <info@fs-driver.org>
