ia64/xen-unstable

changeset 18083:b2d2bc30a04b

[IA64] kexec: Add a wrapper to vmx_switch_rr7()

Add a C wrapper around the assembly vmx_switch_rr7().
This will be filled out with code that saves inserted TLB values
by subsequent patches.

Cc: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Simon Horman <horms@verge.net.au>
author Isaku Yamahata <yamahata@valinux.co.jp>
date Tue Jul 22 12:15:02 2008 +0900 (2008-07-22)
parents 7ab45f1a6e83
children 0b72d16e794b
files xen/arch/ia64/vmx/vmx_entry.S xen/arch/ia64/vmx/vmx_vcpu.c xen/include/asm-ia64/vmx_vcpu.h
line diff
     1.1 --- a/xen/arch/ia64/vmx/vmx_entry.S	Tue Jul 22 12:15:02 2008 +0900
     1.2 +++ b/xen/arch/ia64/vmx/vmx_entry.S	Tue Jul 22 12:15:02 2008 +0900
     1.3 @@ -608,8 +608,7 @@ END(ia64_leave_hypercall)
     1.4  	 IA64_PSR_ED | IA64_PSR_DFL | IA64_PSR_DFH | IA64_PSR_IC)
     1.5  #define PSR_BITS_TO_SET    IA64_PSR_BN
     1.6  
     1.7 -//extern void vmx_switch_rr7(unsigned long rid, void *guest_vhpt, void * pal_vaddr, void * shared_arch_info );
     1.8 -GLOBAL_ENTRY(vmx_switch_rr7)
     1.9 +GLOBAL_ENTRY(__vmx_switch_rr7)
    1.10         // not sure this unwind statement is correct...
    1.11         .prologue ASM_UNW_PRLG_RP|ASM_UNW_PRLG_PFS, ASM_UNW_PRLG_GRSAVE(1)
    1.12  	alloc loc1 = ar.pfs, 4, 8, 0, 0
    1.13 @@ -777,4 +776,4 @@ 1:
    1.14  	mov ar.rsc=loc3                 // restore RSE configuration
    1.15  	srlz.d                          // seralize restoration of psr.l
    1.16  	br.ret.sptk.many rp
    1.17 -END(vmx_switch_rr7)
    1.18 +END(__vmx_switch_rr7)
     2.1 --- a/xen/arch/ia64/vmx/vmx_vcpu.c	Tue Jul 22 12:15:02 2008 +0900
     2.2 +++ b/xen/arch/ia64/vmx/vmx_vcpu.c	Tue Jul 22 12:15:02 2008 +0900
     2.3 @@ -196,6 +196,12 @@ void vmx_vcpu_set_rr_fast(VCPU *vcpu, u6
     2.4      }
     2.5  }
     2.6  
     2.7 +void vmx_switch_rr7(unsigned long rid, void *guest_vhpt,
     2.8 +                    void *pal_vaddr, void *shared_arch_info)
     2.9 +{
    2.10 +    __vmx_switch_rr7(rid, guest_vhpt, pal_vaddr, shared_arch_info);
    2.11 +}
    2.12 +
    2.13  IA64FAULT vmx_vcpu_set_rr(VCPU *vcpu, u64 reg, u64 val)
    2.14  {
    2.15      u64 rrval;
     3.1 --- a/xen/include/asm-ia64/vmx_vcpu.h	Tue Jul 22 12:15:02 2008 +0900
     3.2 +++ b/xen/include/asm-ia64/vmx_vcpu.h	Tue Jul 22 12:15:02 2008 +0900
     3.3 @@ -103,7 +103,10 @@ extern int is_unmasked_irq(VCPU * vcpu);
     3.4  extern uint64_t guest_read_vivr(VCPU * vcpu);
     3.5  extern int vmx_vcpu_pend_interrupt(VCPU * vcpu, uint8_t vector);
     3.6  extern void vcpu_load_kernel_regs(VCPU * vcpu);
     3.7 -extern void vmx_switch_rr7(unsigned long, void *, void *, void *);
     3.8 +extern void __vmx_switch_rr7(unsigned long rid, void *guest_vhpt,
     3.9 +                             void *pal_vaddr, void *shared_arch_info);
    3.10 +extern void vmx_switch_rr7(unsigned long rid, void *guest_vhpt,
    3.11 +                           void *pal_vaddr, void *shared_arch_info);
    3.12  extern void vmx_ia64_set_dcr(VCPU * v);
    3.13  extern void inject_guest_interruption(struct vcpu *vcpu, u64 vec);
    3.14  extern void vmx_asm_bsw0(void);