On Thu, 2007-04-05 at 11:23 -0400, Jimi Xenidis wrote:
> On Apr 4, 2007, at 10:43 PM, Jerone Young wrote:
> 
> > On Wed, 2007-04-04 at 08:57 -0400, Jimi Xenidis wrote:
> >> hmm, how did this ever work?!
> >> I your problem with a direct caller of __xchg() or is this thru the
> >> macro xchg()?
> >
> > The caller is in common/domain.c @ line 310:
> >
> > /* Already dying? Then bail. */
> >     if ( xchg(&d->is_dying, 1) )
> >     {
> >         domain_unpause(d);
> >         return;
> >     }
> >
> >
> > The current macro matches that one in x86. But the parameters we have
> > for __xchg are not in the same order. So one has to change to be  
> > right.
> >
> >>
> >> I notice we have the macro wrong (at least in my copy of xen source):
> >>    #define xchg(ptr,v) ((__typeof__(*(ptr)))__xchg((unsigned long) 
> >> (v),
> >> (ptr),sizeof(*(ptr))))
> >>
> >> where it should be (from Linux):
> >>    #define xchg(ptr,x)                                                     
> >>      \
> >>    ({                                                                      
> >>      \
> >>       __typeof__(*(ptr)) _x_ = (x);                                        
> >>      \
> >>       (__typeof__(*(ptr))) __xchg((ptr), (unsigned long)_x_, sizeof(*
> >> (ptr))); \
> >>    })
> >>
> >> Will that change fix your issue?
> >
> > Doubtful..see use of code above.
> 
> Why?
How did I know that this would come back to haunt me :-)... it was late
and I wasn't thinking straight.

So this should work. The parameters are correct now with this approach.

I'll send another patch using this instead ;-)

> 
> 
> 


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

Reply via email to