Messages in this thread | | | Date | Wed, 28 Sep 2011 10:24:33 -0700 | From | "H. Peter Anvin" <> | Subject | Re: [Xen-devel] [PATCH 00/10] [PATCH RFC V2] Paravirtualized ticketlocks |
| |
On 09/28/2011 10:22 AM, Linus Torvalds wrote: > On Wed, Sep 28, 2011 at 9:47 AM, Jeremy Fitzhardinge <jeremy@goop.org> wrote: >> >> Could do something like: >> >> if (ticket->head >= 254) >> prev = xadd(&ticket->head_tail, 0xff02); >> else >> prev = xadd(&ticket->head_tail, 0x0002); >> >> to compensate for the overflow. > > Oh wow. You havge an even more twisted mind than I do. > > I guess that will work, exactly because we control "head" and thus can > know about the overflow in the low byte. But boy is that ugly ;) > > But at least you wouldn't need to do the loop with cmpxchg. So it's > twisted and ugly, but migth be practical. >
I suspect it should be coded as -254 in order to use a short immediate if that is even possible...
-hpa
-- H. Peter Anvin, Intel Open Source Technology Center I work for Intel. I don't speak on their behalf.
| |