On Tue, 2006-06-06 at 15:31 +0100, Harry Butterworth wrote:
> On Tue, 2006-06-06 at 15:35 +1000, Rusty Russell wrote:
> > + __asm__ __volatile__(
> > + LOCK_PREFIX "cmpxchg8b %3"
> > + : "=d" (nd), "=a" (y), "=c" (d),
> > + "=m" (*(volatile u64 *)(&page->count_info))
> > + : "0" (d), "1" (x), "c" (d), "b" (nx) );
> > + }
> > + while ( unlikely(nd != d) || unlikely(y != x) );
> > +
> > + return 1;
> > +}
>
> What is the "=c" (d) there for? And doesn't cmpxchg8b modify the zero
> flag---is it necessary to clobber the condition code register?
Good questions. I copied this code from below, though, so I can
conveniently punt on this one...
> > diff -r d5f98d23427a xen/include/public/xen.h
> > --- a/xen/include/public/xen.h Tue May 30 10:44:23 2006
> > +++ b/xen/include/public/xen.h Wed May 31 17:39:54 2006
> > @@ -64,6 +64,7 @@
> > #define __HYPERVISOR_xenoprof_op 31
> > #define __HYPERVISOR_event_channel_op 32
> > #define __HYPERVISOR_physdev_op 33
> > +#define __HYPERVISOR_share_op 33
>
> Sharing no 33?
Oops. Good catch, this must have been my sloppy merging. I've fixed
this locally.
Thanks!
Rusty.
--
ccontrol: http://ccontrol.ozlabs.org
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|