fix signal masking race in pthread_create with priority attributes
[musl] / src / thread / arm / syscall_cp.s
index 0cc23b1..a5730c0 100644 (file)
@@ -1,21 +1,29 @@
+.syntax unified
+.global __cp_begin
+.hidden __cp_begin
+.global __cp_end
+.hidden __cp_end
+.global __cp_cancel
+.hidden __cp_cancel
+.hidden __cancel
 .global __syscall_cp_asm
+.hidden __syscall_cp_asm
 .type __syscall_cp_asm,%function
 __syscall_cp_asm:
        mov ip,sp
        stmfd sp!,{r4,r5,r6,r7,lr}
-.global __cp_begin
 __cp_begin:
-       ld r0,[r0]
+       ldr r0,[r0]
        cmp r0,#0
-       blne __cancel
+       blne __cp_cancel
        mov r7,r1
        mov r0,r2
        mov r1,r3
        ldmfd ip,{r2,r3,r4,r5,r6}
        svc 0
-.global __cp_end
 __cp_end:
        ldmfd sp!,{r4,r5,r6,r7,lr}
-       tst lr,#1
-       moveq pc,lr
        bx lr
+__cp_cancel:
+       ldmfd sp!,{r4,r5,r6,r7,lr}
+       b __cancel