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@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ppc-devel
|