904ff1027da28f1a978a891432571eedf41e5a0f
[musl] / src / setjmp / arm / setjmp.s
1 .global __setjmp
2 .global _setjmp
3 .global setjmp
4 .type __setjmp,%function
5 .type _setjmp,%function
6 .type setjmp,%function
7 __setjmp:
8 _setjmp:
9 setjmp:
10         mov ip,r0
11         stmia ip!,{v1,v2,v3,v4,v5,v6,sl,fp,sp,lr}
12         mov r0,#0
13
14         adr r1,1f
15         ldr r2,1f
16         ldr r1,[r1,r2]
17
18         tst r1,#0x260
19         beq 3f
20         tst r1,#0x20
21         beq 2f
22         stc p2, cr4, [ip], #48
23 2:      tst r1,#0x40
24         beq 2f
25         stc p11, cr8, [ip], #64
26         mrc p10, 7, r2, cr1, cr0, 0
27         stmia ip!, {r0,r2}
28 2:      tst r1,#0x200
29         beq 3f
30         stcl p1, cr10, [ip], #8
31         stcl p1, cr11, [ip], #8
32         stcl p1, cr12, [ip], #8
33         stcl p1, cr13, [ip], #8
34         stcl p1, cr14, [ip], #8
35         stcl p1, cr15, [ip], #8
36 3:      tst lr,#1
37         moveq pc,lr
38         bx lr
39
40 .hidden __hwcap
41 1:      .word __hwcap-1b