mirror of
git://git.musl-libc.org/musl
synced 2024-12-15 11:15:07 +00:00
in arm cancellation point asm, don't unnecessarily preserve link register
The only reason we needed to preserve the link register was because we were using a branch-link instruction to branch to __cp_cancel. Replacing this with a branch means we can avoid the save/restore as the link register is no longer modified.
This commit is contained in:
parent
49eacf29d2
commit
e0e8ae754c
@ -11,19 +11,19 @@
|
||||
.type __syscall_cp_asm,%function
|
||||
__syscall_cp_asm:
|
||||
mov ip,sp
|
||||
stmfd sp!,{r4,r5,r6,r7,lr}
|
||||
stmfd sp!,{r4,r5,r6,r7}
|
||||
__cp_begin:
|
||||
ldr r0,[r0]
|
||||
cmp r0,#0
|
||||
blne __cp_cancel
|
||||
bne __cp_cancel
|
||||
mov r7,r1
|
||||
mov r0,r2
|
||||
mov r1,r3
|
||||
ldmfd ip,{r2,r3,r4,r5,r6}
|
||||
svc 0
|
||||
__cp_end:
|
||||
ldmfd sp!,{r4,r5,r6,r7,lr}
|
||||
ldmfd sp!,{r4,r5,r6,r7}
|
||||
bx lr
|
||||
__cp_cancel:
|
||||
ldmfd sp!,{r4,r5,r6,r7,lr}
|
||||
ldmfd sp!,{r4,r5,r6,r7}
|
||||
b __cancel
|
||||
|
Loading…
Reference in New Issue
Block a user