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:
Patrick Oppenlander 2019-08-01 14:34:59 +10:00 committed by Rich Felker
parent 49eacf29d2
commit e0e8ae754c

View File

@ -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