ia64/xen-unstable

changeset 4386:5ac1e6647195

bitkeeper revision 1.1236.49.2 (424ad892NxT9Xau1LJ8r_XedSt3rhw)

ivt.S:
ia64: oops, missing file for vhpt patch
author djm@kirby.fc.hp.com
date Wed Mar 30 16:49:22 2005 +0000 (2005-03-30)
parents 0111710ed751
children e3aff19a321a f042ec659698
files xen/arch/ia64/patch/linux-2.6.7/ivt.S
line diff
     1.1 --- a/xen/arch/ia64/patch/linux-2.6.7/ivt.S	Wed Mar 30 00:31:47 2005 +0000
     1.2 +++ b/xen/arch/ia64/patch/linux-2.6.7/ivt.S	Wed Mar 30 16:49:22 2005 +0000
     1.3 @@ -1,5 +1,5 @@
     1.4 ---- /home/djm/src/xen/xeno-ia64.bk/xen/linux-2.6.7/arch/ia64/kernel/ivt.S	2004-06-15 23:18:59.000000000 -0600
     1.5 -+++ /home/djm/src/xen/xeno-ia64.bk/xen/arch/ia64/ivt.S	2004-12-17 13:47:03.000000000 -0700
     1.6 +--- ../../linux-2.6.7/arch/ia64/kernel/ivt.S	2004-06-15 23:18:59.000000000 -0600
     1.7 ++++ arch/ia64/ivt.S	2005-03-28 20:16:02.000000000 -0700
     1.8  @@ -1,3 +1,21 @@
     1.9  +
    1.10  +#ifdef XEN
    1.11 @@ -36,49 +36,63 @@
    1.12   	.section .text.ivt,"ax"
    1.13   
    1.14   	.align 32768	// align on 32KB boundary
    1.15 -@@ -213,6 +238,9 @@
    1.16 +@@ -213,6 +238,13 @@
    1.17   // 0x0400 Entry 1 (size 64 bundles) ITLB (21)
    1.18   ENTRY(itlb_miss)
    1.19   	DBG_FAULT(1)
    1.20  +#ifdef XEN
    1.21  +	VHPT_CCHAIN_LOOKUP(itlb_miss,i)
    1.22 ++#ifdef VHPT_GLOBAL
    1.23 ++	br.cond.sptk page_fault
    1.24 ++	;;
    1.25 ++#endif
    1.26  +#endif
    1.27   	/*
    1.28   	 * The ITLB handler accesses the L3 PTE via the virtually mapped linear
    1.29   	 * page table.  If a nested TLB miss occurs, we switch into physical
    1.30 -@@ -257,6 +285,9 @@
    1.31 +@@ -257,6 +289,13 @@
    1.32   // 0x0800 Entry 2 (size 64 bundles) DTLB (9,48)
    1.33   ENTRY(dtlb_miss)
    1.34   	DBG_FAULT(2)
    1.35  +#ifdef XEN
    1.36  +	VHPT_CCHAIN_LOOKUP(dtlb_miss,d)
    1.37 ++#ifdef VHPT_GLOBAL
    1.38 ++	br.cond.sptk page_fault
    1.39 ++	;;
    1.40 ++#endif
    1.41  +#endif
    1.42   	/*
    1.43   	 * The DTLB handler accesses the L3 PTE via the virtually mapped linear
    1.44   	 * page table.  If a nested TLB miss occurs, we switch into physical
    1.45 -@@ -301,6 +332,10 @@
    1.46 +@@ -301,6 +340,13 @@
    1.47   // 0x0c00 Entry 3 (size 64 bundles) Alt ITLB (19)
    1.48   ENTRY(alt_itlb_miss)
    1.49   	DBG_FAULT(3)
    1.50  +#ifdef XEN
    1.51 -+// I think this is superfluous, once all regions have VHPT enabled
    1.52 ++//#ifdef VHPT_GLOBAL
    1.53  +//	VHPT_CCHAIN_LOOKUP(alt_itlb_miss,i)
    1.54 ++//	br.cond.sptk page_fault
    1.55 ++//	;;
    1.56 ++//#endif
    1.57  +#endif
    1.58   	mov r16=cr.ifa		// get address that caused the TLB miss
    1.59   	movl r17=PAGE_KERNEL
    1.60   	mov r21=cr.ipsr
    1.61 -@@ -339,6 +374,10 @@
    1.62 +@@ -339,6 +385,13 @@
    1.63   // 0x1000 Entry 4 (size 64 bundles) Alt DTLB (7,46)
    1.64   ENTRY(alt_dtlb_miss)
    1.65   	DBG_FAULT(4)
    1.66  +#ifdef XEN
    1.67 -+// I think this is superfluous, once all regions have VHPT enabled
    1.68 ++//#ifdef VHPT_GLOBAL
    1.69  +//	VHPT_CCHAIN_LOOKUP(alt_dtlb_miss,d)
    1.70 ++//	br.cond.sptk page_fault
    1.71 ++//	;;
    1.72 ++//#endif
    1.73  +#endif
    1.74   	mov r16=cr.ifa		// get address that caused the TLB miss
    1.75   	movl r17=PAGE_KERNEL
    1.76   	mov r20=cr.isr
    1.77 -@@ -368,6 +407,17 @@
    1.78 +@@ -368,6 +421,17 @@
    1.79   	cmp.ne p8,p0=r0,r23
    1.80   (p9)	cmp.eq.or.andcm p6,p7=IA64_ISR_CODE_LFETCH,r22	// check isr.code field
    1.81   (p8)	br.cond.spnt page_fault
    1.82 @@ -96,7 +110,7 @@
    1.83   
    1.84   	dep r21=-1,r21,IA64_PSR_ED_BIT,1
    1.85   	or r19=r19,r17		// insert PTE control bits into r19
    1.86 -@@ -448,6 +498,9 @@
    1.87 +@@ -448,6 +512,9 @@
    1.88   /////////////////////////////////////////////////////////////////////////////////////////
    1.89   // 0x1800 Entry 6 (size 64 bundles) Instruction Key Miss (24)
    1.90   ENTRY(ikey_miss)
    1.91 @@ -106,7 +120,7 @@
    1.92   	DBG_FAULT(6)
    1.93   	FAULT(6)
    1.94   END(ikey_miss)
    1.95 -@@ -460,9 +513,16 @@
    1.96 +@@ -460,9 +527,16 @@
    1.97   	srlz.i
    1.98   	;;
    1.99   	SAVE_MIN_WITH_COVER
   1.100 @@ -123,7 +137,7 @@
   1.101   	adds r3=8,r2				// set up second base pointer
   1.102   	;;
   1.103   	ssm psr.ic | PSR_DEFAULT_BITS
   1.104 -@@ -483,6 +543,9 @@
   1.105 +@@ -483,6 +557,9 @@
   1.106   /////////////////////////////////////////////////////////////////////////////////////////
   1.107   // 0x1c00 Entry 7 (size 64 bundles) Data Key Miss (12,51)
   1.108   ENTRY(dkey_miss)
   1.109 @@ -133,7 +147,7 @@
   1.110   	DBG_FAULT(7)
   1.111   	FAULT(7)
   1.112   END(dkey_miss)
   1.113 -@@ -491,6 +554,9 @@
   1.114 +@@ -491,6 +568,9 @@
   1.115   /////////////////////////////////////////////////////////////////////////////////////////
   1.116   // 0x2000 Entry 8 (size 64 bundles) Dirty-bit (54)
   1.117   ENTRY(dirty_bit)
   1.118 @@ -143,7 +157,7 @@
   1.119   	DBG_FAULT(8)
   1.120   	/*
   1.121   	 * What we do here is to simply turn on the dirty bit in the PTE.  We need to
   1.122 -@@ -553,6 +619,9 @@
   1.123 +@@ -553,6 +633,9 @@
   1.124   /////////////////////////////////////////////////////////////////////////////////////////
   1.125   // 0x2400 Entry 9 (size 64 bundles) Instruction Access-bit (27)
   1.126   ENTRY(iaccess_bit)
   1.127 @@ -153,7 +167,7 @@
   1.128   	DBG_FAULT(9)
   1.129   	// Like Entry 8, except for instruction access
   1.130   	mov r16=cr.ifa				// get the address that caused the fault
   1.131 -@@ -618,6 +687,9 @@
   1.132 +@@ -618,6 +701,9 @@
   1.133   /////////////////////////////////////////////////////////////////////////////////////////
   1.134   // 0x2800 Entry 10 (size 64 bundles) Data Access-bit (15,55)
   1.135   ENTRY(daccess_bit)
   1.136 @@ -163,7 +177,7 @@
   1.137   	DBG_FAULT(10)
   1.138   	// Like Entry 8, except for data access
   1.139   	mov r16=cr.ifa				// get the address that caused the fault
   1.140 -@@ -686,6 +758,16 @@
   1.141 +@@ -686,6 +772,16 @@
   1.142   	 * to prevent leaking bits from kernel to user level.
   1.143   	 */
   1.144   	DBG_FAULT(11)
   1.145 @@ -180,7 +194,7 @@
   1.146   	mov r16=IA64_KR(CURRENT)		// r16 = current task; 12 cycle read lat.
   1.147   	mov r17=cr.iim
   1.148   	mov r18=__IA64_BREAK_SYSCALL
   1.149 -@@ -696,7 +778,9 @@
   1.150 +@@ -696,7 +792,9 @@
   1.151   	mov r27=ar.rsc
   1.152   	mov r26=ar.pfs
   1.153   	mov r28=cr.iip
   1.154 @@ -190,7 +204,7 @@
   1.155   	mov r20=r1
   1.156   	;;
   1.157   	adds r16=IA64_TASK_THREAD_ON_USTACK_OFFSET,r16
   1.158 -@@ -792,6 +876,36 @@
   1.159 +@@ -792,6 +890,36 @@
   1.160   	DBG_FAULT(13)
   1.161   	FAULT(13)
   1.162   
   1.163 @@ -227,7 +241,7 @@
   1.164   	.org ia64_ivt+0x3800
   1.165   /////////////////////////////////////////////////////////////////////////////////////////
   1.166   // 0x3800 Entry 14 (size 64 bundles) Reserved
   1.167 -@@ -842,9 +956,11 @@
   1.168 +@@ -842,9 +970,11 @@
   1.169   	 *	- ar.fpsr: set to kernel settings
   1.170   	 */
   1.171   GLOBAL_ENTRY(ia64_syscall_setup)
   1.172 @@ -239,7 +253,7 @@
   1.173   	st8 [r1]=r19				// save b6
   1.174   	add r16=PT(CR_IPSR),r1			// initialize first base pointer
   1.175   	add r17=PT(R11),r1			// initialize second base pointer
   1.176 -@@ -974,6 +1090,37 @@
   1.177 +@@ -974,6 +1104,37 @@
   1.178   	DBG_FAULT(16)
   1.179   	FAULT(16)
   1.180   
   1.181 @@ -277,7 +291,7 @@
   1.182   	.org ia64_ivt+0x4400
   1.183   /////////////////////////////////////////////////////////////////////////////////////////
   1.184   // 0x4400 Entry 17 (size 64 bundles) Reserved
   1.185 -@@ -1090,6 +1237,9 @@
   1.186 +@@ -1090,6 +1251,9 @@
   1.187   /////////////////////////////////////////////////////////////////////////////////////////
   1.188   // 0x5000 Entry 20 (size 16 bundles) Page Not Present (10,22,49)
   1.189   ENTRY(page_not_present)
   1.190 @@ -287,7 +301,7 @@
   1.191   	DBG_FAULT(20)
   1.192   	mov r16=cr.ifa
   1.193   	rsm psr.dt
   1.194 -@@ -1110,6 +1260,9 @@
   1.195 +@@ -1110,6 +1274,9 @@
   1.196   /////////////////////////////////////////////////////////////////////////////////////////
   1.197   // 0x5100 Entry 21 (size 16 bundles) Key Permission (13,25,52)
   1.198   ENTRY(key_permission)
   1.199 @@ -297,7 +311,7 @@
   1.200   	DBG_FAULT(21)
   1.201   	mov r16=cr.ifa
   1.202   	rsm psr.dt
   1.203 -@@ -1123,6 +1276,9 @@
   1.204 +@@ -1123,6 +1290,9 @@
   1.205   /////////////////////////////////////////////////////////////////////////////////////////
   1.206   // 0x5200 Entry 22 (size 16 bundles) Instruction Access Rights (26)
   1.207   ENTRY(iaccess_rights)
   1.208 @@ -307,7 +321,7 @@
   1.209   	DBG_FAULT(22)
   1.210   	mov r16=cr.ifa
   1.211   	rsm psr.dt
   1.212 -@@ -1136,6 +1292,9 @@
   1.213 +@@ -1136,6 +1306,9 @@
   1.214   /////////////////////////////////////////////////////////////////////////////////////////
   1.215   // 0x5300 Entry 23 (size 16 bundles) Data Access Rights (14,53)
   1.216   ENTRY(daccess_rights)
   1.217 @@ -317,7 +331,7 @@
   1.218   	DBG_FAULT(23)
   1.219   	mov r16=cr.ifa
   1.220   	rsm psr.dt
   1.221 -@@ -1153,8 +1312,13 @@
   1.222 +@@ -1153,8 +1326,13 @@
   1.223   	mov r16=cr.isr
   1.224   	mov r31=pr
   1.225   	;;
   1.226 @@ -331,7 +345,7 @@
   1.227   	;;
   1.228   	mov r19=24		// fault number
   1.229   	br.sptk.many dispatch_to_fault_handler
   1.230 -@@ -1164,6 +1328,9 @@
   1.231 +@@ -1164,6 +1342,9 @@
   1.232   /////////////////////////////////////////////////////////////////////////////////////////
   1.233   // 0x5500 Entry 25 (size 16 bundles) Disabled FP-Register (35)
   1.234   ENTRY(disabled_fp_reg)
   1.235 @@ -341,7 +355,7 @@
   1.236   	DBG_FAULT(25)
   1.237   	rsm psr.dfh		// ensure we can access fph
   1.238   	;;
   1.239 -@@ -1177,6 +1344,9 @@
   1.240 +@@ -1177,6 +1358,9 @@
   1.241   /////////////////////////////////////////////////////////////////////////////////////////
   1.242   // 0x5600 Entry 26 (size 16 bundles) Nat Consumption (11,23,37,50)
   1.243   ENTRY(nat_consumption)
   1.244 @@ -351,7 +365,7 @@
   1.245   	DBG_FAULT(26)
   1.246   	FAULT(26)
   1.247   END(nat_consumption)
   1.248 -@@ -1185,6 +1355,10 @@
   1.249 +@@ -1185,6 +1369,10 @@
   1.250   /////////////////////////////////////////////////////////////////////////////////////////
   1.251   // 0x5700 Entry 27 (size 16 bundles) Speculation (40)
   1.252   ENTRY(speculation_vector)
   1.253 @@ -362,7 +376,7 @@
   1.254   	DBG_FAULT(27)
   1.255   	/*
   1.256   	 * A [f]chk.[as] instruction needs to take the branch to the recovery code but
   1.257 -@@ -1228,6 +1402,9 @@
   1.258 +@@ -1228,6 +1416,9 @@
   1.259   /////////////////////////////////////////////////////////////////////////////////////////
   1.260   // 0x5900 Entry 29 (size 16 bundles) Debug (16,28,56)
   1.261   ENTRY(debug_vector)
   1.262 @@ -372,7 +386,7 @@
   1.263   	DBG_FAULT(29)
   1.264   	FAULT(29)
   1.265   END(debug_vector)
   1.266 -@@ -1236,6 +1413,9 @@
   1.267 +@@ -1236,6 +1427,9 @@
   1.268   /////////////////////////////////////////////////////////////////////////////////////////
   1.269   // 0x5a00 Entry 30 (size 16 bundles) Unaligned Reference (57)
   1.270   ENTRY(unaligned_access)
   1.271 @@ -382,7 +396,7 @@
   1.272   	DBG_FAULT(30)
   1.273   	mov r16=cr.ipsr
   1.274   	mov r31=pr		// prepare to save predicates
   1.275 -@@ -1247,6 +1427,9 @@
   1.276 +@@ -1247,6 +1441,9 @@
   1.277   /////////////////////////////////////////////////////////////////////////////////////////
   1.278   // 0x5b00 Entry 31 (size 16 bundles) Unsupported Data Reference (57)
   1.279   ENTRY(unsupported_data_reference)
   1.280 @@ -392,7 +406,7 @@
   1.281   	DBG_FAULT(31)
   1.282   	FAULT(31)
   1.283   END(unsupported_data_reference)
   1.284 -@@ -1255,6 +1438,9 @@
   1.285 +@@ -1255,6 +1452,9 @@
   1.286   /////////////////////////////////////////////////////////////////////////////////////////
   1.287   // 0x5c00 Entry 32 (size 16 bundles) Floating-Point Fault (64)
   1.288   ENTRY(floating_point_fault)
   1.289 @@ -402,7 +416,7 @@
   1.290   	DBG_FAULT(32)
   1.291   	FAULT(32)
   1.292   END(floating_point_fault)
   1.293 -@@ -1263,6 +1449,9 @@
   1.294 +@@ -1263,6 +1463,9 @@
   1.295   /////////////////////////////////////////////////////////////////////////////////////////
   1.296   // 0x5d00 Entry 33 (size 16 bundles) Floating Point Trap (66)
   1.297   ENTRY(floating_point_trap)
   1.298 @@ -412,7 +426,7 @@
   1.299   	DBG_FAULT(33)
   1.300   	FAULT(33)
   1.301   END(floating_point_trap)
   1.302 -@@ -1271,6 +1460,9 @@
   1.303 +@@ -1271,6 +1474,9 @@
   1.304   /////////////////////////////////////////////////////////////////////////////////////////
   1.305   // 0x5e00 Entry 34 (size 16 bundles) Lower Privilege Transfer Trap (66)
   1.306   ENTRY(lower_privilege_trap)
   1.307 @@ -422,7 +436,7 @@
   1.308   	DBG_FAULT(34)
   1.309   	FAULT(34)
   1.310   END(lower_privilege_trap)
   1.311 -@@ -1279,6 +1471,9 @@
   1.312 +@@ -1279,6 +1485,9 @@
   1.313   /////////////////////////////////////////////////////////////////////////////////////////
   1.314   // 0x5f00 Entry 35 (size 16 bundles) Taken Branch Trap (68)
   1.315   ENTRY(taken_branch_trap)
   1.316 @@ -432,7 +446,7 @@
   1.317   	DBG_FAULT(35)
   1.318   	FAULT(35)
   1.319   END(taken_branch_trap)
   1.320 -@@ -1287,6 +1482,9 @@
   1.321 +@@ -1287,6 +1496,9 @@
   1.322   /////////////////////////////////////////////////////////////////////////////////////////
   1.323   // 0x6000 Entry 36 (size 16 bundles) Single Step Trap (69)
   1.324   ENTRY(single_step_trap)
   1.325 @@ -442,7 +456,7 @@
   1.326   	DBG_FAULT(36)
   1.327   	FAULT(36)
   1.328   END(single_step_trap)
   1.329 -@@ -1343,6 +1541,9 @@
   1.330 +@@ -1343,6 +1555,9 @@
   1.331   /////////////////////////////////////////////////////////////////////////////////////////
   1.332   // 0x6900 Entry 45 (size 16 bundles) IA-32 Exeception (17,18,29,41,42,43,44,58,60,61,62,72,73,75,76,77)
   1.333   ENTRY(ia32_exception)
   1.334 @@ -452,7 +466,7 @@
   1.335   	DBG_FAULT(45)
   1.336   	FAULT(45)
   1.337   END(ia32_exception)
   1.338 -@@ -1351,6 +1552,9 @@
   1.339 +@@ -1351,6 +1566,9 @@
   1.340   /////////////////////////////////////////////////////////////////////////////////////////
   1.341   // 0x6a00 Entry 46 (size 16 bundles) IA-32 Intercept  (30,31,59,70,71)
   1.342   ENTRY(ia32_intercept)
   1.343 @@ -462,7 +476,7 @@
   1.344   	DBG_FAULT(46)
   1.345   #ifdef	CONFIG_IA32_SUPPORT
   1.346   	mov r31=pr
   1.347 -@@ -1381,6 +1585,9 @@
   1.348 +@@ -1381,6 +1599,9 @@
   1.349   /////////////////////////////////////////////////////////////////////////////////////////
   1.350   // 0x6b00 Entry 47 (size 16 bundles) IA-32 Interrupt  (74)
   1.351   ENTRY(ia32_interrupt)
   1.352 @@ -472,7 +486,7 @@
   1.353   	DBG_FAULT(47)
   1.354   #ifdef CONFIG_IA32_SUPPORT
   1.355   	mov r31=pr
   1.356 -@@ -1510,6 +1717,39 @@
   1.357 +@@ -1510,6 +1731,39 @@
   1.358   	DBG_FAULT(67)
   1.359   	FAULT(67)
   1.360