ia64/xen-unstable

changeset 16753:81cee3aa9e90

[IA64] vti fault handler clean up: clean up ia64_leave_nested

The rse backing store is unchanged when nested interrupted case so that
bsp related operation doesn't make sense.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
author Alex Williamson <alex.williamson@hp.com>
date Fri Dec 14 13:24:44 2007 -0700 (2007-12-14)
parents 40f15062d188
children d0f0ed665d1a
files xen/arch/ia64/vmx/vmx_entry.S
line diff
     1.1 --- a/xen/arch/ia64/vmx/vmx_entry.S	Fri Dec 14 13:12:17 2007 -0700
     1.2 +++ b/xen/arch/ia64/vmx/vmx_entry.S	Fri Dec 14 13:24:44 2007 -0700
     1.3 @@ -99,8 +99,6 @@ GLOBAL_ENTRY(ia64_leave_nested)
     1.4  	bsw.0			// switch back to bank 0 (no stop bit required beforehand...)
     1.5  	;;
     1.6  	ldf.fill f11=[r2]
     1.7 -//	mov r18=r13
     1.8 -//    mov r21=r13
     1.9  	adds r16=PT(CR_IPSR)+16,r12
    1.10  	adds r17=PT(CR_IIP)+16,r12
    1.11  	;;
    1.12 @@ -110,19 +108,26 @@ GLOBAL_ENTRY(ia64_leave_nested)
    1.13  	ld8 r30=[r16],16	// load cr.ifs
    1.14  	ld8 r25=[r17],16	// load ar.unat
    1.15  	;;
    1.16 +#ifndef XEN
    1.17  	ld8 r26=[r16],16	// load ar.pfs
    1.18  	ld8 r27=[r17],16	// load ar.rsc
    1.19 -#ifndef XEN
    1.20  	cmp.eq p9,p0=r0,r0	// set p9 to indicate that we should restore cr.ifs
    1.21 -#endif
    1.22  	;;
    1.23  	ld8 r24=[r16],16	// load ar.rnat (may be garbage)
    1.24 -	ld8 r23=[r17],16// load ar.bspstore (may be garbage)
    1.25 +	ld8 r23=[r17],16	// load ar.bspstore (may be garbage)
    1.26  	;;
    1.27  	ld8 r31=[r16],16	// load predicates
    1.28 +#else
    1.29 +	ld8 r26=[r16],32	// load ar.pfs
    1.30 +	ld8 r27=[r17],32	// load ar.rsc
    1.31 +	;;
    1.32 +	ld8 r31=[r16],32	// load predicates
    1.33 +#endif
    1.34  	ld8 r22=[r17],16	// load b0
    1.35  	;;
    1.36 -	ld8 r19=[r16],16	// load ar.rsc value for "loadrs"
    1.37 +#ifndef XEN
    1.38 +	ld8 r19=[r16],16        // load ar.rsc value for "loadrs"
    1.39 +#endif
    1.40  	ld8.fill r1=[r17],16	// load r1
    1.41  	;;
    1.42  	ld8.fill r12=[r16],16
    1.43 @@ -135,9 +140,11 @@ GLOBAL_ENTRY(ia64_leave_nested)
    1.44  	ld8.fill r2=[r17]
    1.45  	;;
    1.46  	ld8.fill r3=[r16]
    1.47 +#ifndef XEN
    1.48  	;;
    1.49 -	mov r16=ar.bsp		// get existing backing store pointer
    1.50 +	mov r16=ar.bsp          // get existing backing store pointer
    1.51  	;;
    1.52 +#endif
    1.53  	mov b0=r22
    1.54  	mov ar.pfs=r26
    1.55  	mov cr.ifs=r30