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
> 
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to