xref: /aosp_15_r20/external/musl/src/setjmp/arm/setjmp.S (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
1*c9945492SAndroid Build Coastguard Worker.syntax unified
2*c9945492SAndroid Build Coastguard Worker.global __setjmp
3*c9945492SAndroid Build Coastguard Worker.global _setjmp
4*c9945492SAndroid Build Coastguard Worker.global setjmp
5*c9945492SAndroid Build Coastguard Worker.type __setjmp,%function
6*c9945492SAndroid Build Coastguard Worker.type _setjmp,%function
7*c9945492SAndroid Build Coastguard Worker.type setjmp,%function
8*c9945492SAndroid Build Coastguard Worker__setjmp:
9*c9945492SAndroid Build Coastguard Worker_setjmp:
10*c9945492SAndroid Build Coastguard Workersetjmp:
11*c9945492SAndroid Build Coastguard Worker	mov ip,r0
12*c9945492SAndroid Build Coastguard Worker	stmia ip!,{v1,v2,v3,v4,v5,v6,sl,fp}
13*c9945492SAndroid Build Coastguard Worker	mov r2,sp
14*c9945492SAndroid Build Coastguard Worker	stmia ip!,{r2,lr}
15*c9945492SAndroid Build Coastguard Worker	mov r0,#0
16*c9945492SAndroid Build Coastguard Worker
17*c9945492SAndroid Build Coastguard Worker	adr r1,1f
18*c9945492SAndroid Build Coastguard Worker	ldr r2,1f
19*c9945492SAndroid Build Coastguard Worker	ldr r1,[r1,r2]
20*c9945492SAndroid Build Coastguard Worker
21*c9945492SAndroid Build Coastguard Worker#if __ARM_ARCH < 8
22*c9945492SAndroid Build Coastguard Worker	tst r1,#0x260
23*c9945492SAndroid Build Coastguard Worker	beq 3f
24*c9945492SAndroid Build Coastguard Worker	// HWCAP_ARM_FPA
25*c9945492SAndroid Build Coastguard Worker	tst r1,#0x20
26*c9945492SAndroid Build Coastguard Worker	beq 2f
27*c9945492SAndroid Build Coastguard Worker	stc p2, cr4, [ip], #48
28*c9945492SAndroid Build Coastguard Worker#endif
29*c9945492SAndroid Build Coastguard Worker2:	tst r1,#0x40
30*c9945492SAndroid Build Coastguard Worker	beq 2f
31*c9945492SAndroid Build Coastguard Worker	.fpu vfp
32*c9945492SAndroid Build Coastguard Worker	vstmia ip!, {d8-d15}
33*c9945492SAndroid Build Coastguard Worker	.fpu softvfp
34*c9945492SAndroid Build Coastguard Worker	.eabi_attribute 10, 0
35*c9945492SAndroid Build Coastguard Worker	.eabi_attribute 27, 0
36*c9945492SAndroid Build Coastguard Worker#if __ARM_ARCH < 8
37*c9945492SAndroid Build Coastguard Worker	// HWCAP_ARM_IWMMXT
38*c9945492SAndroid Build Coastguard Worker2:	tst r1,#0x200
39*c9945492SAndroid Build Coastguard Worker	beq 3f
40*c9945492SAndroid Build Coastguard Worker	stcl p1, cr10, [ip], #8
41*c9945492SAndroid Build Coastguard Worker	stcl p1, cr11, [ip], #8
42*c9945492SAndroid Build Coastguard Worker	stcl p1, cr12, [ip], #8
43*c9945492SAndroid Build Coastguard Worker	stcl p1, cr13, [ip], #8
44*c9945492SAndroid Build Coastguard Worker	stcl p1, cr14, [ip], #8
45*c9945492SAndroid Build Coastguard Worker	stcl p1, cr15, [ip], #8
46*c9945492SAndroid Build Coastguard Worker#endif
47*c9945492SAndroid Build Coastguard Worker2:
48*c9945492SAndroid Build Coastguard Worker3:	bx lr
49*c9945492SAndroid Build Coastguard Worker
50*c9945492SAndroid Build Coastguard Worker.hidden __hwcap
51*c9945492SAndroid Build Coastguard Worker.align 2
52*c9945492SAndroid Build Coastguard Worker1:	.word __hwcap-1b
53