Messages in this thread | | | Date | Fri, 7 Feb 2014 11:45:30 +0100 | From | Peter Zijlstra <> | Subject | Re: [PATCH] Convert powerpc simple spinlocks into ticket locks |
| |
On Fri, Feb 07, 2014 at 11:31:39AM +0100, Peter Zijlstra wrote: > Anyway, what might work is something like (please forgive my ppc asm, I > can barely read the thing, I've never before attempted writing it): > > lock: > 1: lharx %0, 0, &head > mov %1, %0 > addic %0, %0, 1 > stwcd %0, 0, &head > bne- 1b > 2: lhax %0, 0, &tail
That might need to be lhz too, I'm confused on all the load variants.
> lwsync > cmp 0, %0, %0
cmp 0, %0, %1
So we compare the &tail load to the xadd return %1 above.
> bne- 2b > > > unlock: > lhz %0, 0, &tail > addic %0, %0, 1 > lwsync > sth %0, 0, &tail >
| |