github.com/afumu/libc@v0.0.6/musl/src/setjmp/arm/setjmp.S (about) 1 .syntax unified 2 .global __setjmp 3 .global _setjmp 4 .global setjmp 5 .type __setjmp,%function 6 .type _setjmp,%function 7 .type setjmp,%function 8 __setjmp: 9 _setjmp: 10 setjmp: 11 mov ip,r0 12 stmia ip!,{v1,v2,v3,v4,v5,v6,sl,fp} 13 mov r2,sp 14 stmia ip!,{r2,lr} 15 mov r0,#0 16 17 adr r1,1f 18 ldr r2,1f 19 ldr r1,[r1,r2] 20 21 #if __ARM_ARCH < 8 22 tst r1,#0x260 23 beq 3f 24 // HWCAP_ARM_FPA 25 tst r1,#0x20 26 beq 2f 27 stc p2, cr4, [ip], #48 28 #endif 29 2: tst r1,#0x40 30 beq 2f 31 .fpu vfp 32 vstmia ip!, {d8-d15} 33 .fpu softvfp 34 .eabi_attribute 10, 0 35 .eabi_attribute 27, 0 36 #if __ARM_ARCH < 8 37 // HWCAP_ARM_IWMMXT 38 2: tst r1,#0x200 39 beq 3f 40 stcl p1, cr10, [ip], #8 41 stcl p1, cr11, [ip], #8 42 stcl p1, cr12, [ip], #8 43 stcl p1, cr13, [ip], #8 44 stcl p1, cr14, [ip], #8 45 stcl p1, cr15, [ip], #8 46 #endif 47 2: 48 3: bx lr 49 50 .hidden __hwcap 51 .align 2 52 1: .word __hwcap-1b