On Fri, Apr 25, 2008 at 11:30:57AM +1000, Simon Horman wrote:
> Index: xen-unstable.hg/xen/arch/ia64/xen/xenasm.S
> ===================================================================
> --- xen-unstable.hg.orig/xen/arch/ia64/xen/xenasm.S 2008-04-25
> 11:17:22.000000000 +1000
> +++ xen-unstable.hg/xen/arch/ia64/xen/xenasm.S 2008-04-25
> 11:18:36.000000000 +1000
> @@ -195,6 +195,175 @@ GLOBAL_ENTRY(ia64_new_rr7)
...
> +GLOBAL_ENTRY(ia64_new_rr7_efi)
...
> + // re-pin mappings for kernel text and data
> + mov r24=KERNEL_TR_PAGE_SHIFT<<2
> + movl r17=KERNEL_START
> + ;;
> + ptr.i r17,r24
> + ;;
> + ptr.d r17,r24
> + ;;
> + srlz.i
> + ;;
> + srlz.d
> + ;;
> + mov r16=IA64_TR_KERNEL
> + mov cr.itir=r24
> + mov cr.ifa=r17
> + or r18=loc6,r26
> + ;;
> + itr.i itr[r16]=r18
> + ;;
> + itr.d dtr[r16]=r18
> + ;;
> + srlz.i
> + ;;
> + srlz.d
> + ;;
> +
> + // re-pin mappings for stack (current)
> +
> + // unless overlaps with KERNEL_TR
> + dep r18=0,r13,0,KERNEL_TR_PAGE_SHIFT
> + ;;
> + cmp.eq p7,p0=r17,r18
> +(p7) br.cond.sptk ia64_new_rr7_efi_stack_overlaps
> + mov r25=IA64_GRANULE_SHIFT<<2
> + dep r21=0,r13,60,4 // physical address of "current"
> + ;;
> + ptr.d r13,r25
> + ;;
> + srlz.d
> + ;;
> + or r23=r21,r26 // construct PA | page properties
> + mov cr.itir=r25
> + mov cr.ifa=r13 // VA of next task...
> + mov r21=IA64_TR_CURRENT_STACK
> + ;;
> + itr.d dtr[r21]=r23 // wire in new mapping...
> + ;;
> + srlz.d
> + ;;
> +ia64_new_rr7_efi_stack_overlaps:
Now the text area starts at KERNEL_START = 0xa000000100000000
which is out of the xen identity mapping area.
The above overlapping check always fails so that the check
is unnecessary.
Please check the current ia64_new_rr7() which was chenged
rather recently.
--
yamahata
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel
|