# HG changeset patch # User Tristan Gingold # Date 1200637374 -3600 # Node ID 806994e96dbdd0cd8746bf0e059616e64f3014bf # Parent 1552203d0aa1e208f7770f51ee4f899077c70016 Do not overwrite r25 (and restore r24) for C fallback of vmx_asm_thash. Signed-off-by: Tristan Gingold diff -r 1552203d0aa1 -r 806994e96dbd xen/arch/ia64/vmx/optvfault.S --- a/xen/arch/ia64/vmx/optvfault.S Thu Jan 17 07:04:08 2008 +0100 +++ b/xen/arch/ia64/vmx/optvfault.S Fri Jan 18 07:22:54 2008 +0100 @@ -17,6 +17,7 @@ #include #include #include +#include #include #include @@ -469,24 +470,26 @@ GLOBAL_ENTRY(vmx_asm_thash) ;; vmx_asm_thash_back1: shr.u r23=r19,61 // get RR number - adds r25=VCPU_VRR0_OFS,r21 // get vcpu->arch.arch_vmx.vrr[0]'s addr + adds r28=VCPU_VRR0_OFS,r21 // get vcpu->arch.arch_vmx.vrr[0]'s addr adds r16=IA64_VPD_VPTA_OFFSET,r16 // get virtual pta ;; - shladd r27=r23,3,r25 // get vcpu->arch.arch_vmx.vrr[r23]'s addr + shladd r27=r23,3,r28 // get vcpu->arch.arch_vmx.vrr[r23]'s addr ld8 r17=[r16] // get virtual PTA mov r26=1 ;; extr.u r29=r17,2,6 // get pta.size - ld8 r25=[r27] // get vcpu->arch.arch_vmx.vrr[r23]'s value + ld8 r28=[r27] // get vcpu->arch.arch_vmx.vrr[r23]'s value ;; // Fall-back to C if VF (long format) is set tbit.nz p6,p0=r17,8 mov b0=r24 - (p6) br.cond.dpnt.many vmx_virtualization_fault_back - extr.u r25=r25,2,6 // get rr.ps + ;; +(p6) mov r24=EVENT_THASH +(p6) br.cond.dpnt.many vmx_virtualization_fault_back + extr.u r28=r28,2,6 // get rr.ps shl r22=r26,r29 // 1UL << pta.size ;; - shr.u r23=r19,r25 // vaddr >> rr.ps + shr.u r23=r19,r28 // vaddr >> rr.ps adds r26=3,r29 // pta.size + 3 shl r27=r17,3 // pta << 3 ;;