ia64/xen-unstable

changeset 16755:8cb29f1083ac

[IA64] vti fault handler clean up: clean up of vmx_ivt.S

Trivial clean up of vmx_ivt.S
- Use VMX_SAVE_MIN_WITH_COVER instead of VMX_SAVE_MIN_WITH_COVER_R19
if it isn't necessary.
- Fix vmx_dispatch_interrupt, vmx_interrupt. psr.i shouldn't be set.
ia64_handle_irq() should be called with interrupt masked.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
author Alex Williamson <alex.williamson@hp.com>
date Fri Dec 14 13:29:42 2007 -0700 (2007-12-14)
parents d0f0ed665d1a
children fa80218de06a
files xen/arch/ia64/vmx/vmx_ivt.S
line diff
     1.1 --- a/xen/arch/ia64/vmx/vmx_ivt.S	Fri Dec 14 13:26:38 2007 -0700
     1.2 +++ b/xen/arch/ia64/vmx/vmx_ivt.S	Fri Dec 14 13:29:42 2007 -0700
     1.3 @@ -702,9 +702,6 @@ ENTRY(vmx_interrupt)
     1.4  
     1.5      ssm psr.ic
     1.6      ;;
     1.7 -    srlz.i
     1.8 -    ;;
     1.9 -    (p15) ssm psr.i
    1.10      adds r3=8,r2		// set up second base pointer for SAVE_REST
    1.11      srlz.i			// ensure everybody knows psr.ic is back on
    1.12      ;;
    1.13 @@ -1361,7 +1358,7 @@ ENTRY(vmx_dispatch_reflection)
    1.14  END(vmx_dispatch_reflection)
    1.15  
    1.16  ENTRY(vmx_dispatch_virtualization_fault)
    1.17 -    VMX_SAVE_MIN_WITH_COVER_R19
    1.18 +    VMX_SAVE_MIN_WITH_COVER
    1.19      ;;
    1.20      alloc r14=ar.pfs,0,0,2,0        // now it's safe (must be first in insn group!)
    1.21      mov out0=r13        //vcpu
    1.22 @@ -1384,7 +1381,7 @@ END(vmx_dispatch_virtualization_fault)
    1.23  
    1.24  
    1.25  GLOBAL_ENTRY(vmx_dispatch_vexirq)
    1.26 -    VMX_SAVE_MIN_WITH_COVER_R19
    1.27 +    VMX_SAVE_MIN_WITH_COVER
    1.28      alloc r14=ar.pfs,0,0,1,0
    1.29      mov out0=r13
    1.30  
    1.31 @@ -1424,8 +1421,7 @@ ENTRY(vmx_dispatch_tlb_miss)
    1.32  END(vmx_dispatch_tlb_miss)
    1.33  
    1.34  ENTRY(vmx_dispatch_break_fault)
    1.35 -    VMX_SAVE_MIN_WITH_COVER_R19
    1.36 -    ;;
    1.37 +    VMX_SAVE_MIN_WITH_COVER
    1.38      ;;
    1.39      alloc r14=ar.pfs,0,0,4,0 // now it's safe (must be first in insn group!)
    1.40      mov out0=cr.ifa
    1.41 @@ -1450,17 +1446,15 @@ END(vmx_dispatch_break_fault)
    1.42  
    1.43  
    1.44  ENTRY(vmx_dispatch_interrupt)
    1.45 -    VMX_SAVE_MIN_WITH_COVER_R19	// uses r31; defines r2 and r3
    1.46 +    VMX_SAVE_MIN_WITH_COVER	// uses r31; defines r2 and r3
    1.47      ;;
    1.48 -    alloc r14=ar.pfs,0,0,2,0 // must be first in an insn group
    1.49 +    alloc r14=ar.pfs,0,0,2,0	// must be first in an insn group
    1.50      mov out0=cr.ivr		// pass cr.ivr as first arg
    1.51      adds r3=8,r2		// set up second base pointer for SAVE_REST
    1.52      ;;
    1.53      ssm psr.ic
    1.54      ;;
    1.55      srlz.i
    1.56 -    ;;
    1.57 -    (p15) ssm psr.i
    1.58      movl r14=ia64_leave_hypervisor
    1.59      ;;
    1.60      VMX_SAVE_REST