ia64/xen-unstable

changeset 13372:c6b683ba68f5

[IA64] Fix save/restore

Using the new hypercall path, scratch registers are not saved/restored.

So after returning from hypercall, r20 may contain garbage data.
This triggered General Exception.

Signed-off-by: Anthony Xu <anthony.xu@intel.com>
author awilliam@xenbuild2.aw
date Sun Jan 14 22:18:38 2007 -0700 (2007-01-14)
parents 43c5302ee92d
children a2b2b2a011f1
files linux-2.6-xen-sparse/arch/ia64/xen/xensetup.S
line diff
     1.1 --- a/linux-2.6-xen-sparse/arch/ia64/xen/xensetup.S	Sun Jan 14 14:58:51 2007 -0700
     1.2 +++ b/linux-2.6-xen-sparse/arch/ia64/xen/xensetup.S	Sun Jan 14 22:18:38 2007 -0700
     1.3 @@ -39,7 +39,7 @@ END(early_xen_setup)
     1.4     Just force the stacked registers to be written in memory.  */	
     1.5  GLOBAL_ENTRY(xencomm_arch_hypercall_suspend)
     1.6  	;; 
     1.7 -	alloc r20=ar.pfs,0,0,2,0
     1.8 +	alloc r20=ar.pfs,0,0,6,0
     1.9  	mov r2=__HYPERVISOR_sched_op
    1.10  	;; 
    1.11  	/* We don't want to deal with RSE.  */
    1.12 @@ -49,6 +49,5 @@ GLOBAL_ENTRY(xencomm_arch_hypercall_susp
    1.13  	;;
    1.14  	break 0x1000
    1.15  	;; 
    1.16 -	mov ar.pfs=r20
    1.17  	br.ret.sptk.many b0
    1.18  END(xencomm_arch_hypercall_suspend)