ia64: Set page size identity mapping of EFI in itlb_miss

This could also be placed in alt_itlb_miss as the code
branches there. The code does seem to work when placed
in alt_itlb_miss. However I prefer the more minimal change.

Curiously, adding this code to dtlb_miss (or alt_dtlb_miss)
causes booting to fail.

Cc: Isaku Yamahata <yamahata@valinux.co.jp>
Cc: Tristan Gingold <tgingold@free.fr>
Cc: Alex Williamson <alex.williamson@hp.com>
Cc: Aron Griffis <aron@hp.com>
Signed-off-by: Simon Horman <horms@verge.net.au>

--- 
Thu, 06 Dec 2007 16:24:36 +0900
* Upport for changes in patches that this one depends on

Index: xen-unstable.hg/xen/arch/ia64/xen/ivt.S
===================================================================
--- xen-unstable.hg.orig/xen/arch/ia64/xen/ivt.S	2007-12-06 16:21:28.000000000 +0900
+++ xen-unstable.hg/xen/arch/ia64/xen/ivt.S	2007-12-06 16:24:16.000000000 +0900
@@ -133,12 +133,20 @@ ENTRY(itlb_miss)
 	cmp.eq.or p8,p0=0x1c,r17	// 0xe...
 	mov r25=XEN_EFI_RID
 	;;
-	cmp.eq.and p8,p0=r25,r23	// rr6 == XEN_EFI_RID
-	;;
-(p8)	br.cond.spnt late_alt_itlb_miss
+	cmp.ne.and p8,p0=r25,r23	// rr6 == XEN_EFI_RID
 	;;
+(p8)	br.cond.spnt fast_tlb_miss_reflect
 
-	br.cond.spnt fast_tlb_miss_reflect
+	// EFI PAGE size is IA64_GRANULE_SIZE
+	// itir's key should be 0, as should the reserved space
+	// thus we can just set itir = (IA64_GRANULE_SHIFT << 2)
+	movl r20=IA64_GRANULE_SHIFT
+	;;
+	shl r20=r20,2
+	;;
+	mov cr.itir=r20
+	;;
+	br.cond.sptk late_alt_itlb_miss
 END(itlb_miss)
 
 	.org ia64_ivt+0x0800
