ia64_setreg(_IA64_REG_CR_DCR, ( IA64_DCR_DP | IA64_DCR_DK | IA64_DCR_DX | IA64_DCR_DR
| IA64_DCR_DA | IA64_DCR_DD | IA64_DCR_LC));
#endif
- atomic_inc(&init_mm.mm_count);
#ifndef XEN
+ atomic_inc(&init_mm.mm_count);
current->active_mm = &init_mm;
#endif
#ifdef XEN
#include <xen/sched.h>
#include <asm/desc.h>
-#define INIT_MM(name) \
-{ \
- .pgd = swapper_pg_dir, \
- .mm_users = ATOMIC_INIT(2), \
- .mm_count = ATOMIC_INIT(1), \
- .page_table_lock = SPIN_LOCK_UNLOCKED, \
- .mmlist = LIST_HEAD_INIT(name.mmlist), \
-}
-
#define IDLE_VCPU(_v) \
{ \
processor: 0, \
domain: 0 \
}
-struct mm_struct init_mm = INIT_MM(init_mm);
-EXPORT_SYMBOL(init_mm);
-
/*
* Initial task structure.
*
// 0x0000 Entry 0 (size 64 bundles) VHPT Translation (8,20,47)
ENTRY(vhpt_miss)
DBG_FAULT(0)
+#ifdef XEN
+ FAULT(0)
+#else
/*
* The VHPT vector is invoked when the TLB entry for the virtual page table
* is missing. This happens only as a result of a previous
;;
rsm psr.dt // use physical addressing for data
mov r31=pr // save the predicate registers
-#ifdef XEN
- movl r19=THIS_CPU(cpu_kr)+IA64_KR_PT_BASE_OFFSET;;
-#else
mov r19=IA64_KR(PT_BASE) // get page table base address
-#endif
shl r21=r16,3 // shift bit 60 into sign bit
shr.u r17=r16,61 // get the region number into r17
;;
mov pr=r31,-1 // restore predicate registers
rfi
+#endif
END(vhpt_miss)
.org ia64_ivt+0x400
mov b0=r30
br.sptk.many b0 // return to continuation point
;;
-#endif
+#else
/*
* In the absence of kernel bugs, we get here when the virtually mapped linear
* page table is accessed non-speculatively (e.g., in the Dirty-bit, Instruction
* Clobbered: b0, r18, r19, r21, psr.dt (cleared)
*/
rsm psr.dt // switch to using physical data addressing
-#ifdef XEN
- movl r19=THIS_CPU(cpu_kr)+IA64_KR_PT_BASE_OFFSET;;
-#else
mov r19=IA64_KR(PT_BASE) // get the page table base address
-#endif
shl r21=r16,3 // shift bit 60 into sign bit
;;
shr.u r17=r16,61 // get the region number into r17
(p6) br.cond.spnt page_fault
mov b0=r30
br.sptk.many b0 // return to continuation point
+#endif
END(nested_dtlb_miss)
.org ia64_ivt+0x1800