[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] [IA64] Fix MINSTATE_START/END_SAVE_MIN_PHYS for INIT handler
# HG changeset patch # User awilliam@xxxxxxxxxxx # Node ID 446402805fd9d50482c8be15479a682c362b518e # Parent be1b7896c203bfa33858d2e6de3d37905181c895 [IA64] Fix MINSTATE_START/END_SAVE_MIN_PHYS for INIT handler - THIS_CPU(ia64_mca_data) have physcal address of each cpu's ia64_mca_cpu. I computed address of init_stack by using it. - from dep r12=-1,r12,61,3; to dep r12=-1,r12,60,4; to computed xen virtual address. Signed-off-by: Akio Takebe <takebe_akio@xxxxxxxxxxxxxx> --- xen/arch/ia64/linux-xen/minstate.h | 29 +++++++++++++++++++++++++++-- 1 files changed, 27 insertions(+), 2 deletions(-) diff -r be1b7896c203 -r 446402805fd9 xen/arch/ia64/linux-xen/minstate.h --- a/xen/arch/ia64/linux-xen/minstate.h Thu Jul 06 10:23:34 2006 -0600 +++ b/xen/arch/ia64/linux-xen/minstate.h Thu Jul 06 10:32:26 2006 -0600 @@ -36,7 +36,31 @@ * For mca_asm.S we want to access the stack physically since the state is saved before we * go virtual and don't want to destroy the iip or ipsr. */ -#define MINSTATE_START_SAVE_MIN_PHYS \ +#ifdef XEN +# define MINSTATE_START_SAVE_MIN_PHYS \ +(pKStk) movl r3=THIS_CPU(ia64_mca_data);; \ +(pKStk) tpa r3 = r3;; \ +(pKStk) ld8 r3 = [r3];; \ +(pKStk) addl r3=IA64_MCA_CPU_INIT_STACK_OFFSET,r3;; \ +(pKStk) addl r1=IA64_STK_OFFSET-IA64_PT_REGS_SIZE,r3; \ +(pUStk) mov ar.rsc=0; /* set enforced lazy mode, pl 0, little-endian, loadrs=0 */ \ +(pUStk) addl r22=IA64_RBS_OFFSET,r1; /* compute base of register backing store */ \ + ;; \ +(pUStk) mov r24=ar.rnat; \ +(pUStk) addl r1=IA64_STK_OFFSET-IA64_PT_REGS_SIZE,r1; /* compute base of memory stack */ \ +(pUStk) mov r23=ar.bspstore; /* save ar.bspstore */ \ +(pUStk) dep r22=-1,r22,60,4; /* compute Xen virtual addr of RBS */ \ + ;; \ +(pUStk) mov ar.bspstore=r22; /* switch to Xen RBS */ \ + ;; \ +(pUStk) mov r18=ar.bsp; \ +(pUStk) mov ar.rsc=0x3; /* set eager mode, pl 0, little-endian, loadrs=0 */ \ + +# define MINSTATE_END_SAVE_MIN_PHYS \ + dep r12=-1,r12,60,4; /* make sp a Xen virtual address */ \ + ;; +#else +# define MINSTATE_START_SAVE_MIN_PHYS \ (pKStk) mov r3=IA64_KR(PER_CPU_DATA);; \ (pKStk) addl r3=THIS_CPU(ia64_mca_data),r3;; \ (pKStk) ld8 r3 = [r3];; \ @@ -55,9 +79,10 @@ (pUStk) mov r18=ar.bsp; \ (pUStk) mov ar.rsc=0x3; /* set eager mode, pl 0, little-endian, loadrs=0 */ \ -#define MINSTATE_END_SAVE_MIN_PHYS \ +# define MINSTATE_END_SAVE_MIN_PHYS \ dep r12=-1,r12,61,3; /* make sp a kernel virtual address */ \ ;; +#endif /* XEN */ #ifdef MINSTATE_VIRT #ifdef XEN _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |