提交 5aac5e21 编写于 作者: R Rich Felker

optimize arm setjmp/longjmp register saving/loading

the original code was wrongly based on how it would be done in thumb
mode, but that's not needed because musl's asm only targets arm.
上级 e1b9c1b0
...@@ -7,9 +7,7 @@ longjmp: ...@@ -7,9 +7,7 @@ longjmp:
mov ip,r0 mov ip,r0
movs r0,r1 movs r0,r1
moveq r0,#1 moveq r0,#1
ldmia ip!, {v1,v2,v3,v4,v5,v6,sl,fp} ldmia ip!, {v1,v2,v3,v4,v5,v6,sl,fp,sp,lr}
ldr sp,[ip],#4
ldr lr,[ip],#4
tst lr,#1 tst lr,#1
moveq pc,lr moveq pc,lr
bx lr bx lr
...@@ -8,9 +8,7 @@ __setjmp: ...@@ -8,9 +8,7 @@ __setjmp:
_setjmp: _setjmp:
setjmp: setjmp:
mov ip,r0 mov ip,r0
stmia ip!,{v1,v2,v3,v4,v5,v6,sl,fp} stmia ip!,{v1,v2,v3,v4,v5,v6,sl,fp,sp,lr}
mov r2,sp
stmia ip!,{r2,lr}
mov r0,#0 mov r0,#0
tst lr,#1 tst lr,#1
moveq pc,lr moveq pc,lr
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册