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