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?




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

Reply via email to