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