setjmp.S raw
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
53