# HG changeset patch # User yamahata@xxxxxxxxxxxxx # Date 1197959926 -32400 # Node ID 5cacdbf13f6a8f5a0dfdca5a5ef51b2149929b81 # Parent 809d9d53f7608145df7016407b43876eaf9227d8 fix start in head.S. Later stack was allocated from domain heap, so that stack should be mapped if necessary. PATCHNAME: fix_start_head_s Signed-off-by: Isaku Yamahata diff -r 809d9d53f760 -r 5cacdbf13f6a xen/arch/ia64/linux-xen/head.S --- a/xen/arch/ia64/linux-xen/head.S Wed Dec 19 11:43:26 2007 +0900 +++ b/xen/arch/ia64/linux-xen/head.S Tue Dec 18 15:38:46 2007 +0900 @@ -331,11 +331,23 @@ 1: // now we are in virtual mode ;; tpa r3=r2 // r3 == phys addr of task struct mov r16=-1 +#ifdef XEN + ;; + dep r2=-1,r3,60,4 // IMVA of task + // XEN: check overlap with XENHEAP + mov r17=ip + ;; + tpa r17=r17 + ;; + dep r17=0,r17,0,KERNEL_TR_PAGE_SHIFT + dep r18=0,r3,0,KERNEL_TR_PAGE_SHIFT + ;; + cmp.eq p4,p0=r17,r18 +(p4) br.cond.dpnt .load_current +#else (isBP) br.cond.dpnt .load_current // BP stack is on region 5 --- no need to map it - -#ifndef XEN - // XEN: stack is allocated in xenheap, which is currently always - // mapped. +#endif + // load mapping for stack (virtaddr in r2, physaddr in r3) rsm psr.ic movl r17=PAGE_KERNEL @@ -344,9 +356,7 @@ 1: // now we are in virtual mode dep r18=0,r3,0,12 ;; or r18=r17,r18 -#ifdef XEN - dep r2=-1,r3,60,4 // IMVA of task -#else +#ifndef XEN dep r2=-1,r3,61,3 // IMVA of task #endif ;; @@ -364,7 +374,6 @@ 1: // now we are in virtual mode ;; ssm psr.ic srlz.d -#endif ;; .load_current: