ARC: nptl: cancellable wrappers were broken
commitd388c3e67f78b414a24550a61b1bab49d7c01883
authorVineet Gupta <Vineet.Gupta1@synopsys.com>
Fri, 7 Oct 2016 21:11:16 +0000 (7 14:11 -0700)
committerWaldemar Brodkorb <wbx@uclibc-ng.org>
Thu, 13 Oct 2016 19:18:32 +0000 (13 21:18 +0200)
treeef3a6f5b145f2813df2980ce805d7537d09e68fc
parent24ca498fc322936281b0c69c271dd64979c313eb
ARC: nptl: cancellable wrappers were broken

This was reported as uClibc test suite failures of tst-mqueue3 and
tst-mqueue5.

The syscall args were getting clobbered, so use scratch regs which are
not used for syscall args

00002690 <mq_timedsend>:

    ; SINGLE_THREAD_P

    2690: sub r1,r25,0x448   <--- clobers r1, r2
    2698: ld r2,[r1]
    269c: cmp r2,0

    26a0: bz mq_timedsend_nocancel

    ; DOCARGS (saves syscall args but r1, r2 clobbered already)

    26a4: st.aw blink,[sp,-4]
    26a8: st.aw r0,[sp,-4]
    26ac: st.aw r1,[sp,-4]
    26b0: st.aw r2,[sp,-4]
    26b4: st.aw r3,[sp,-4]
    26b8: st.aw r4,[sp,-4]
    26bc: bl 1e28 <__librt_enable_asynccancel>

Reported-by: Eugeniy Paltsev <paltsev@synopsys.com>
Cc: Alexey Brodkin <abrodkin@synopsys.com>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
libpthread/nptl/sysdeps/unix/sysv/linux/arc/sysdep-cancel.h