ia64/linux-2.6.18-xen.hg

changeset 855:b8bef3d2d3c3

[IA64] fix fsys.S paravirtualization

fix fsys.S paravirtualization.
event_mask must be cleared before checking event_pending.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
author Isaku Yamahata <yamahata@valinux.co.jp>
date Tue Apr 07 11:31:17 2009 +0900 (2009-04-07)
parents 950b9eb27661
children e75edb8d2c44
files arch/ia64/kernel/fsys.S
line diff
     1.1 --- a/arch/ia64/kernel/fsys.S	Mon Apr 06 13:51:20 2009 +0100
     1.2 +++ b/arch/ia64/kernel/fsys.S	Tue Apr 07 11:31:17 2009 +0900
     1.3 @@ -662,14 +662,16 @@ GLOBAL_ENTRY(fsys_bubble_down)
     1.4  	// p15 = !running_on_xen
     1.5  	cmp.ne p14,p15=r0,r14
     1.6  	;; 
     1.7 -(p14)	movl r28=XSI_PSR_I_ADDR;;
     1.8 -(p14)	ld8 r28=[r28];;
     1.9 -(p14)	adds r28=-1,r28;;			// event_pending
    1.10 -(p14)	ld1 r14=[r28];;
    1.11 -(p14)	cmp.ne.unc p13,p14=r14,r0;;
    1.12 +(p14)	movl r14=XSI_PSR_I_ADDR
    1.13 +	;;
    1.14 +(p14)	ld8 r14=[r14]
    1.15 +	;;
    1.16 +(p14)	st1 [r14]=r0,-1				// clear event_mask
    1.17 +	;;
    1.18 +(p14)	ld1 r14=[r14]				// event_pending
    1.19 +	;;
    1.20 +(p14)	cmp.ne.unc p13,p14=r14,r0
    1.21  (p13)	XEN_HYPER_SSM_I
    1.22 -(p14)	adds r28=1,r28;;			// event_mask
    1.23 -(p14)	st1 [r28]=r0;;
    1.24  (p15)	ssm psr.i
    1.25  #else
    1.26  	ssm psr.i				// M2   we're on kernel stacks now, reenable irqs