The use of r28 doesn't seem necessary. Only use r14.

[IA64] fix fsys.S paravirtualization

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

Signed-off-by: Isaku Yamahata <yamah...@valinux.co.jp>

diff --git a/arch/ia64/kernel/fsys.S b/arch/ia64/kernel/fsys.S
--- a/arch/ia64/kernel/fsys.S
+++ b/arch/ia64/kernel/fsys.S
@@ -662,14 +662,16 @@ GLOBAL_ENTRY(fsys_bubble_down)
        // p15 = !running_on_xen
        cmp.ne p14,p15=r0,r14
        ;; 
-(p14)  movl r28=XSI_PSR_I_ADDR;;
-(p14)  ld8 r28=[r28];;
-(p14)  adds r28=-1,r28;;                       // event_pending
-(p14)  ld1 r14=[r28];;
-(p14)  cmp.ne.unc p13,p14=r14,r0;;
+(p14)  movl r14=XSI_PSR_I_ADDR
+       ;;
+(p14)  ld8 r14=[r14]
+       ;;
+(p14)  st1 [r14]=r0,-1                         // clear event_mask
+       ;;
+(p14)  ld1 r14=[r14]                           // event_pending
+       ;;
+(p14)  cmp.ne.unc p13,p14=r14,r0
 (p13)  XEN_HYPER_SSM_I
-(p14)  adds r28=1,r28;;                        // event_mask
-(p14)  st1 [r28]=r0;;
 (p15)  ssm psr.i
 #else
        ssm psr.i                               // M2   we're on kernel stacks 
now, reenable irqs


On Tue, Mar 31, 2009 at 02:38:55PM +0900, Isaku Yamahata wrote:
> [IA64] fix fsys.S paravirtualization
> 
> fix fsys.S paravirtualization.
> event_mask must be cleared before checking event_pending.
> 
> Signed-off-by: Isaku Yamahata <yamah...@valinux.co.jp>
> 
> diff --git a/arch/ia64/kernel/fsys.S b/arch/ia64/kernel/fsys.S
> --- a/arch/ia64/kernel/fsys.S
> +++ b/arch/ia64/kernel/fsys.S
> @@ -662,14 +662,16 @@ GLOBAL_ENTRY(fsys_bubble_down)
>       // p15 = !running_on_xen
>       cmp.ne p14,p15=r0,r14
>       ;; 
> -(p14)        movl r28=XSI_PSR_I_ADDR;;
> -(p14)        ld8 r28=[r28];;
> -(p14)        adds r28=-1,r28;;                       // event_pending
> -(p14)        ld1 r14=[r28];;
> -(p14)        cmp.ne.unc p13,p14=r14,r0;;
> +(p14)        movl r28=XSI_PSR_I_ADDR
> +     ;;
> +(p14)        ld8 r28=[r28]
> +     ;;
> +(p14)        st1 [r28]=r0,-1                         // clear event_mask
> +     ;;
> +(p14)        ld1 r14=[r28]                           // event_pending
> +     ;;
> +(p14)        cmp.ne.unc p13,p14=r14,r0
>  (p13)        XEN_HYPER_SSM_I
> -(p14)        adds r28=1,r28;;                        // event_mask
> -(p14)        st1 [r28]=r0;;
>  (p15)        ssm psr.i
>  #else
>       ssm psr.i                               // M2   we're on kernel stacks 
> now, reenable irqs
> 
> 

-- 
yamahata

_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@lists.xensource.com
http://lists.xensource.com/xen-ia64-devel

Reply via email to