[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 1/3] x86/irq: local_irq_restore() should not blindly popf
>>> On 21.10.13 at 15:41, Andrew Cooper <andrew.cooper3@xxxxxxxxxx> wrote: > --- a/xen/include/asm-x86/system.h > +++ b/xen/include/asm-x86/system.h > @@ -159,8 +159,10 @@ static always_inline unsigned long __cmpxchg( > #define local_irq_restore(x) \ > ({ \ > BUILD_BUG_ON(sizeof(x) != sizeof(long)); \ > - asm volatile ( "push" __OS " %0 ; popf" __OS \ > - : : "g" (x) : "memory", "cc" ); \ > + if ( x & X86_EFLAGS_IF ) \ > + local_irq_enable(); \ > + else \ > + local_irq_disable(); \ _If_ you're going to re-do this using the mask-and-merge approach I suggested in the other reply, may I ask that you also replace the open coded (1<<9) a few lines down with X86_EFLAGS_IF (at once making the comment there superfluous)? Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |