Переглянути джерело

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.
Rich Felker 12 роки тому
батько
коміт
5aac5e2189
2 змінених файлів з 2 додано та 6 видалено
  1. 1 3
      src/setjmp/arm/longjmp.s
  2. 1 3
      src/setjmp/arm/setjmp.s

+ 1 - 3
src/setjmp/arm/longjmp.s

@@ -7,9 +7,7 @@ longjmp:
 	mov ip,r0
 	movs r0,r1
 	moveq r0,#1
-	ldmia ip!, {v1,v2,v3,v4,v5,v6,sl,fp}
-	ldr sp,[ip],#4
-	ldr lr,[ip],#4
+	ldmia ip!, {v1,v2,v3,v4,v5,v6,sl,fp,sp,lr}
 	tst lr,#1
 	moveq pc,lr
 	bx lr

+ 1 - 3
src/setjmp/arm/setjmp.s

@@ -8,9 +8,7 @@ __setjmp:
 _setjmp:
 setjmp:
 	mov ip,r0
-	stmia ip!,{v1,v2,v3,v4,v5,v6,sl,fp}
-	mov r2,sp
-	stmia ip!,{r2,lr}
+	stmia ip!,{v1,v2,v3,v4,v5,v6,sl,fp,sp,lr}
 	mov r0,#0
 	tst lr,#1
 	moveq pc,lr