bitkeeper revision 1.1236.49.2 (424ad892NxT9Xau1LJ8r_XedSt3rhw)

ivt.S:
  ia64: oops, missing file for vhpt patch
This commit is contained in:
djm@kirby.fc.hp.com committed 2005-03-30 16:49:22 +00:00
1 parent 7d6dc9749e
commit e5f7347a9f
1 file changed
+54 -40
+54 -40
View File
@@ -1,5 +1,5 @@
--- /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
+++ /home/djm/src/xen/xeno-ia64.bk/xen/arch/ia64/ivt.S 2004-12-17 13:47:03.000000000 -0700
--- ../../linux-2.6.7/arch/ia64/kernel/ivt.S 2004-06-15 23:18:59.000000000 -0600
+++ arch/ia64/ivt.S 2005-03-28 20:16:02.000000000 -0700
@@ -1,3 +1,21 @@
+
+#ifdef XEN
@@ -36,49 +36,63 @@
.section .text.ivt,"ax"
.align 32768 // align on 32KB boundary
@@ -213,6 +238,9 @@
@@ -213,6 +238,13 @@
// 0x0400 Entry 1 (size 64 bundles) ITLB (21)
ENTRY(itlb_miss)
DBG_FAULT(1)
+#ifdef XEN
+ VHPT_CCHAIN_LOOKUP(itlb_miss,i)
+#ifdef VHPT_GLOBAL
+ br.cond.sptk page_fault
+ ;;
+#endif
+#endif
/*
* The ITLB handler accesses the L3 PTE via the virtually mapped linear
* page table. If a nested TLB miss occurs, we switch into physical
@@ -257,6 +285,9 @@
@@ -257,6 +289,13 @@
// 0x0800 Entry 2 (size 64 bundles) DTLB (9,48)
ENTRY(dtlb_miss)
DBG_FAULT(2)
+#ifdef XEN
+ VHPT_CCHAIN_LOOKUP(dtlb_miss,d)
+#ifdef VHPT_GLOBAL
+ br.cond.sptk page_fault
+ ;;
+#endif
+#endif
/*
* The DTLB handler accesses the L3 PTE via the virtually mapped linear
* page table. If a nested TLB miss occurs, we switch into physical
@@ -301,6 +332,10 @@
@@ -301,6 +340,13 @@
// 0x0c00 Entry 3 (size 64 bundles) Alt ITLB (19)
ENTRY(alt_itlb_miss)
DBG_FAULT(3)
+#ifdef XEN
+// I think this is superfluous, once all regions have VHPT enabled
+//#ifdef VHPT_GLOBAL
+// VHPT_CCHAIN_LOOKUP(alt_itlb_miss,i)
+// br.cond.sptk page_fault
+// ;;
+//#endif
+#endif
mov r16=cr.ifa // get address that caused the TLB miss
movl r17=PAGE_KERNEL
mov r21=cr.ipsr
@@ -339,6 +374,10 @@
@@ -339,6 +385,13 @@
// 0x1000 Entry 4 (size 64 bundles) Alt DTLB (7,46)
ENTRY(alt_dtlb_miss)
DBG_FAULT(4)
+#ifdef XEN
+// I think this is superfluous, once all regions have VHPT enabled
+//#ifdef VHPT_GLOBAL
+// VHPT_CCHAIN_LOOKUP(alt_dtlb_miss,d)
+// br.cond.sptk page_fault
+// ;;
+//#endif
+#endif
mov r16=cr.ifa // get address that caused the TLB miss
movl r17=PAGE_KERNEL
mov r20=cr.isr
@@ -368,6 +407,17 @@
@@ -368,6 +421,17 @@
cmp.ne p8,p0=r0,r23
(p9) cmp.eq.or.andcm p6,p7=IA64_ISR_CODE_LFETCH,r22 // check isr.code field
(p8) br.cond.spnt page_fault
@@ -96,7 +110,7 @@
dep r21=-1,r21,IA64_PSR_ED_BIT,1
or r19=r19,r17 // insert PTE control bits into r19
@@ -448,6 +498,9 @@
@@ -448,6 +512,9 @@
/////////////////////////////////////////////////////////////////////////////////////////
// 0x1800 Entry 6 (size 64 bundles) Instruction Key Miss (24)
ENTRY(ikey_miss)
@@ -106,7 +120,7 @@
DBG_FAULT(6)
FAULT(6)
END(ikey_miss)
@@ -460,9 +513,16 @@
@@ -460,9 +527,16 @@
srlz.i
;;
SAVE_MIN_WITH_COVER
@@ -123,7 +137,7 @@
adds r3=8,r2 // set up second base pointer
;;
ssm psr.ic | PSR_DEFAULT_BITS
@@ -483,6 +543,9 @@
@@ -483,6 +557,9 @@
/////////////////////////////////////////////////////////////////////////////////////////
// 0x1c00 Entry 7 (size 64 bundles) Data Key Miss (12,51)
ENTRY(dkey_miss)
@@ -133,7 +147,7 @@
DBG_FAULT(7)
FAULT(7)
END(dkey_miss)
@@ -491,6 +554,9 @@
@@ -491,6 +568,9 @@
/////////////////////////////////////////////////////////////////////////////////////////
// 0x2000 Entry 8 (size 64 bundles) Dirty-bit (54)
ENTRY(dirty_bit)
@@ -143,7 +157,7 @@
DBG_FAULT(8)
/*
* What we do here is to simply turn on the dirty bit in the PTE. We need to
@@ -553,6 +619,9 @@
@@ -553,6 +633,9 @@
/////////////////////////////////////////////////////////////////////////////////////////
// 0x2400 Entry 9 (size 64 bundles) Instruction Access-bit (27)
ENTRY(iaccess_bit)
@@ -153,7 +167,7 @@
DBG_FAULT(9)
// Like Entry 8, except for instruction access
mov r16=cr.ifa // get the address that caused the fault
@@ -618,6 +687,9 @@
@@ -618,6 +701,9 @@
/////////////////////////////////////////////////////////////////////////////////////////
// 0x2800 Entry 10 (size 64 bundles) Data Access-bit (15,55)
ENTRY(daccess_bit)
@@ -163,7 +177,7 @@
DBG_FAULT(10)
// Like Entry 8, except for data access
mov r16=cr.ifa // get the address that caused the fault
@@ -686,6 +758,16 @@
@@ -686,6 +772,16 @@
* to prevent leaking bits from kernel to user level.
*/
DBG_FAULT(11)
@@ -180,7 +194,7 @@
mov r16=IA64_KR(CURRENT) // r16 = current task; 12 cycle read lat.
mov r17=cr.iim
mov r18=__IA64_BREAK_SYSCALL
@@ -696,7 +778,9 @@
@@ -696,7 +792,9 @@
mov r27=ar.rsc
mov r26=ar.pfs
mov r28=cr.iip
@@ -190,7 +204,7 @@
mov r20=r1
;;
adds r16=IA64_TASK_THREAD_ON_USTACK_OFFSET,r16
@@ -792,6 +876,36 @@
@@ -792,6 +890,36 @@
DBG_FAULT(13)
FAULT(13)
@@ -227,7 +241,7 @@
.org ia64_ivt+0x3800
/////////////////////////////////////////////////////////////////////////////////////////
// 0x3800 Entry 14 (size 64 bundles) Reserved
@@ -842,9 +956,11 @@
@@ -842,9 +970,11 @@
* - ar.fpsr: set to kernel settings
*/
GLOBAL_ENTRY(ia64_syscall_setup)
@@ -239,7 +253,7 @@
st8 [r1]=r19 // save b6
add r16=PT(CR_IPSR),r1 // initialize first base pointer
add r17=PT(R11),r1 // initialize second base pointer
@@ -974,6 +1090,37 @@
@@ -974,6 +1104,37 @@
DBG_FAULT(16)
FAULT(16)
@@ -277,7 +291,7 @@
.org ia64_ivt+0x4400
/////////////////////////////////////////////////////////////////////////////////////////
// 0x4400 Entry 17 (size 64 bundles) Reserved
@@ -1090,6 +1237,9 @@
@@ -1090,6 +1251,9 @@
/////////////////////////////////////////////////////////////////////////////////////////
// 0x5000 Entry 20 (size 16 bundles) Page Not Present (10,22,49)
ENTRY(page_not_present)
@@ -287,7 +301,7 @@
DBG_FAULT(20)
mov r16=cr.ifa
rsm psr.dt
@@ -1110,6 +1260,9 @@
@@ -1110,6 +1274,9 @@
/////////////////////////////////////////////////////////////////////////////////////////
// 0x5100 Entry 21 (size 16 bundles) Key Permission (13,25,52)
ENTRY(key_permission)
@@ -297,7 +311,7 @@
DBG_FAULT(21)
mov r16=cr.ifa
rsm psr.dt
@@ -1123,6 +1276,9 @@
@@ -1123,6 +1290,9 @@
/////////////////////////////////////////////////////////////////////////////////////////
// 0x5200 Entry 22 (size 16 bundles) Instruction Access Rights (26)
ENTRY(iaccess_rights)
@@ -307,7 +321,7 @@
DBG_FAULT(22)
mov r16=cr.ifa
rsm psr.dt
@@ -1136,6 +1292,9 @@
@@ -1136,6 +1306,9 @@
/////////////////////////////////////////////////////////////////////////////////////////
// 0x5300 Entry 23 (size 16 bundles) Data Access Rights (14,53)
ENTRY(daccess_rights)
@@ -317,7 +331,7 @@
DBG_FAULT(23)
mov r16=cr.ifa
rsm psr.dt
@@ -1153,8 +1312,13 @@
@@ -1153,8 +1326,13 @@
mov r16=cr.isr
mov r31=pr
;;
@@ -331,7 +345,7 @@
;;
mov r19=24 // fault number
br.sptk.many dispatch_to_fault_handler
@@ -1164,6 +1328,9 @@
@@ -1164,6 +1342,9 @@
/////////////////////////////////////////////////////////////////////////////////////////
// 0x5500 Entry 25 (size 16 bundles) Disabled FP-Register (35)
ENTRY(disabled_fp_reg)
@@ -341,7 +355,7 @@
DBG_FAULT(25)
rsm psr.dfh // ensure we can access fph
;;
@@ -1177,6 +1344,9 @@
@@ -1177,6 +1358,9 @@
/////////////////////////////////////////////////////////////////////////////////////////
// 0x5600 Entry 26 (size 16 bundles) Nat Consumption (11,23,37,50)
ENTRY(nat_consumption)
@@ -351,7 +365,7 @@
DBG_FAULT(26)
FAULT(26)
END(nat_consumption)
@@ -1185,6 +1355,10 @@
@@ -1185,6 +1369,10 @@
/////////////////////////////////////////////////////////////////////////////////////////
// 0x5700 Entry 27 (size 16 bundles) Speculation (40)
ENTRY(speculation_vector)
@@ -362,7 +376,7 @@
DBG_FAULT(27)
/*
* A [f]chk.[as] instruction needs to take the branch to the recovery code but
@@ -1228,6 +1402,9 @@
@@ -1228,6 +1416,9 @@
/////////////////////////////////////////////////////////////////////////////////////////
// 0x5900 Entry 29 (size 16 bundles) Debug (16,28,56)
ENTRY(debug_vector)
@@ -372,7 +386,7 @@
DBG_FAULT(29)
FAULT(29)
END(debug_vector)
@@ -1236,6 +1413,9 @@
@@ -1236,6 +1427,9 @@
/////////////////////////////////////////////////////////////////////////////////////////
// 0x5a00 Entry 30 (size 16 bundles) Unaligned Reference (57)
ENTRY(unaligned_access)
@@ -382,7 +396,7 @@
DBG_FAULT(30)
mov r16=cr.ipsr
mov r31=pr // prepare to save predicates
@@ -1247,6 +1427,9 @@
@@ -1247,6 +1441,9 @@
/////////////////////////////////////////////////////////////////////////////////////////
// 0x5b00 Entry 31 (size 16 bundles) Unsupported Data Reference (57)
ENTRY(unsupported_data_reference)
@@ -392,7 +406,7 @@
DBG_FAULT(31)
FAULT(31)
END(unsupported_data_reference)
@@ -1255,6 +1438,9 @@
@@ -1255,6 +1452,9 @@
/////////////////////////////////////////////////////////////////////////////////////////
// 0x5c00 Entry 32 (size 16 bundles) Floating-Point Fault (64)
ENTRY(floating_point_fault)
@@ -402,7 +416,7 @@
DBG_FAULT(32)
FAULT(32)
END(floating_point_fault)
@@ -1263,6 +1449,9 @@
@@ -1263,6 +1463,9 @@
/////////////////////////////////////////////////////////////////////////////////////////
// 0x5d00 Entry 33 (size 16 bundles) Floating Point Trap (66)
ENTRY(floating_point_trap)
@@ -412,7 +426,7 @@
DBG_FAULT(33)
FAULT(33)
END(floating_point_trap)
@@ -1271,6 +1460,9 @@
@@ -1271,6 +1474,9 @@
/////////////////////////////////////////////////////////////////////////////////////////
// 0x5e00 Entry 34 (size 16 bundles) Lower Privilege Transfer Trap (66)
ENTRY(lower_privilege_trap)
@@ -422,7 +436,7 @@
DBG_FAULT(34)
FAULT(34)
END(lower_privilege_trap)
@@ -1279,6 +1471,9 @@
@@ -1279,6 +1485,9 @@
/////////////////////////////////////////////////////////////////////////////////////////
// 0x5f00 Entry 35 (size 16 bundles) Taken Branch Trap (68)
ENTRY(taken_branch_trap)
@@ -432,7 +446,7 @@
DBG_FAULT(35)
FAULT(35)
END(taken_branch_trap)
@@ -1287,6 +1482,9 @@
@@ -1287,6 +1496,9 @@
/////////////////////////////////////////////////////////////////////////////////////////
// 0x6000 Entry 36 (size 16 bundles) Single Step Trap (69)
ENTRY(single_step_trap)
@@ -442,7 +456,7 @@
DBG_FAULT(36)
FAULT(36)
END(single_step_trap)
@@ -1343,6 +1541,9 @@
@@ -1343,6 +1555,9 @@
/////////////////////////////////////////////////////////////////////////////////////////
// 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)
ENTRY(ia32_exception)
@@ -452,7 +466,7 @@
DBG_FAULT(45)
FAULT(45)
END(ia32_exception)
@@ -1351,6 +1552,9 @@
@@ -1351,6 +1566,9 @@
/////////////////////////////////////////////////////////////////////////////////////////
// 0x6a00 Entry 46 (size 16 bundles) IA-32 Intercept (30,31,59,70,71)
ENTRY(ia32_intercept)
@@ -462,7 +476,7 @@
DBG_FAULT(46)
#ifdef CONFIG_IA32_SUPPORT
mov r31=pr
@@ -1381,6 +1585,9 @@
@@ -1381,6 +1599,9 @@
/////////////////////////////////////////////////////////////////////////////////////////
// 0x6b00 Entry 47 (size 16 bundles) IA-32 Interrupt (74)
ENTRY(ia32_interrupt)
@@ -472,7 +486,7 @@
DBG_FAULT(47)
#ifdef CONFIG_IA32_SUPPORT
mov r31=pr
@@ -1510,6 +1717,39 @@
@@ -1510,6 +1731,39 @@
DBG_FAULT(67)
FAULT(67)
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.