011315b70f94b2e3d5cdc5d86d2333a34a1fb442
[musl] / src / setjmp / arm / setjmp.s
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         tst r1,#0x260
22         beq 3f
23         tst r1,#0x20
24         beq 2f
25         stc p2, cr4, [ip], #48
26 2:      tst r1,#0x40
27         beq 2f
28         .fpu vfp
29         vstmia ip!, {d8-d15}
30         .fpu softvfp
31         .eabi_attribute 10, 0
32         .eabi_attribute 27, 0
33 2:      tst r1,#0x200
34         beq 3f
35         stcl p1, cr10, [ip], #8
36         stcl p1, cr11, [ip], #8
37         stcl p1, cr12, [ip], #8
38         stcl p1, cr13, [ip], #8
39         stcl p1, cr14, [ip], #8
40         stcl p1, cr15, [ip], #8
41 3:      bx lr
42
43 .hidden __hwcap
44 .align 2
45 1:      .word __hwcap-1b