ia64/xen-unstable

changeset 5799:970f74591ffa

Fixes so xen+xenlinux boots on ski
author djm@kirby.fc.hp.com
date Mon Jul 11 08:20:39 2005 -0700 (2005-07-11)
parents d0a1154755c9
children 9870485d4836
files xen/arch/ia64/hyperprivop.S xen/arch/ia64/vhpt.c
line diff
     1.1 --- a/xen/arch/ia64/hyperprivop.S	Sun Jul 10 08:53:17 2005 -0700
     1.2 +++ b/xen/arch/ia64/hyperprivop.S	Mon Jul 11 08:20:39 2005 -0700
     1.3 @@ -288,9 +288,10 @@ GLOBAL_ENTRY(fast_tick_reflect)
     1.4  	cmp.ne p6,p0=r28,r30
     1.5  (p6)	br.cond.spnt.few rp;;
     1.6  	movl r20=(PERCPU_ADDR)+IA64_CPUINFO_ITM_NEXT_OFFSET;;
     1.7 -	ld8 r21=[r20];;
     1.8 +	ld8 r26=[r20];;
     1.9  	mov r27=ar.itc;;
    1.10 -	cmp.ltu p6,p0=r21,r27
    1.11 +	adds r27=200,r27	// safety margin
    1.12 +	cmp.ltu p6,p0=r26,r27
    1.13  (p6)	br.cond.spnt.few rp;;
    1.14  	mov r17=cr.ipsr;;
    1.15  	// slow path if: ipsr.be==1, ipsr.pp==1
    1.16 @@ -300,14 +301,16 @@ GLOBAL_ENTRY(fast_tick_reflect)
    1.17  	extr.u r21=r17,IA64_PSR_PP_BIT,1 ;;
    1.18  	cmp.ne p6,p0=r21,r0
    1.19  (p6)	br.cond.spnt.few rp;;
    1.20 +	// definitely have a domain tick
    1.21 +	mov cr.eoi=r0;;
    1.22 +	mov rp=r29;;
    1.23 +	mov cr.itm=r26;;	// ensure next tick
    1.24  #ifdef FAST_REFLECT_CNT
    1.25  	movl r20=fast_reflect_count+((0x3000>>8)*8);;
    1.26  	ld8 r21=[r20];;
    1.27  	adds r21=1,r21;;
    1.28  	st8 [r20]=r21;;
    1.29  #endif
    1.30 -	mov cr.eoi=r0;;
    1.31 -	mov rp=r29;;
    1.32  	// vcpu_pend_timer(current)
    1.33  	movl r18=XSI_PSR_IC;;
    1.34  	adds r20=XSI_ITV_OFS-XSI_PSR_IC_OFS,r18 ;;
     2.1 --- a/xen/arch/ia64/vhpt.c	Sun Jul 10 08:53:17 2005 -0700
     2.2 +++ b/xen/arch/ia64/vhpt.c	Mon Jul 11 08:20:39 2005 -0700
     2.3 @@ -90,9 +90,10 @@ void vhpt_map(void)
     2.4  void vhpt_multiple_insert(unsigned long vaddr, unsigned long pte, unsigned long logps)
     2.5  {
     2.6  	unsigned long mask = (1L << logps) - 1;
     2.7 +	extern long running_on_sim;
     2.8  	int i;
     2.9  
    2.10 -	if (logps-PAGE_SHIFT > 10) {
    2.11 +	if (logps-PAGE_SHIFT > 10 && !running_on_sim) {
    2.12  		// if this happens, we may want to revisit this algorithm
    2.13  		printf("vhpt_multiple_insert:logps-PAGE_SHIFT>10,spinning..\n");
    2.14  		while(1);