# HG changeset patch
# User djm@xxxxxxxxxxxxxxx
# Node ID 970f74591ffa01d76d5703159e9e52155fecb594
# Parent d0a1154755c95ffdb4455a81a72dc746a845ca97
Fixes so xen+xenlinux boots on ski
diff -r d0a1154755c9 -r 970f74591ffa xen/arch/ia64/hyperprivop.S
--- a/xen/arch/ia64/hyperprivop.S Sun Jul 10 15:53:17 2005
+++ b/xen/arch/ia64/hyperprivop.S Mon Jul 11 15:20:39 2005
@@ -288,9 +288,10 @@
cmp.ne p6,p0=r28,r30
(p6) br.cond.spnt.few rp;;
movl r20=(PERCPU_ADDR)+IA64_CPUINFO_ITM_NEXT_OFFSET;;
- ld8 r21=[r20];;
+ ld8 r26=[r20];;
mov r27=ar.itc;;
- cmp.ltu p6,p0=r21,r27
+ adds r27=200,r27 // safety margin
+ cmp.ltu p6,p0=r26,r27
(p6) br.cond.spnt.few rp;;
mov r17=cr.ipsr;;
// slow path if: ipsr.be==1, ipsr.pp==1
@@ -300,14 +301,16 @@
extr.u r21=r17,IA64_PSR_PP_BIT,1 ;;
cmp.ne p6,p0=r21,r0
(p6) br.cond.spnt.few rp;;
+ // definitely have a domain tick
+ mov cr.eoi=r0;;
+ mov rp=r29;;
+ mov cr.itm=r26;; // ensure next tick
#ifdef FAST_REFLECT_CNT
movl r20=fast_reflect_count+((0x3000>>8)*8);;
ld8 r21=[r20];;
adds r21=1,r21;;
st8 [r20]=r21;;
#endif
- mov cr.eoi=r0;;
- mov rp=r29;;
// vcpu_pend_timer(current)
movl r18=XSI_PSR_IC;;
adds r20=XSI_ITV_OFS-XSI_PSR_IC_OFS,r18 ;;
diff -r d0a1154755c9 -r 970f74591ffa xen/arch/ia64/vhpt.c
--- a/xen/arch/ia64/vhpt.c Sun Jul 10 15:53:17 2005
+++ b/xen/arch/ia64/vhpt.c Mon Jul 11 15:20:39 2005
@@ -90,9 +90,10 @@
void vhpt_multiple_insert(unsigned long vaddr, unsigned long pte, unsigned
long logps)
{
unsigned long mask = (1L << logps) - 1;
+ extern long running_on_sim;
int i;
- if (logps-PAGE_SHIFT > 10) {
+ if (logps-PAGE_SHIFT > 10 && !running_on_sim) {
// if this happens, we may want to revisit this algorithm
printf("vhpt_multiple_insert:logps-PAGE_SHIFT>10,spinning..\n");
while(1);
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|