1570af302Sopenharmony_ci.syntax unified
2570af302Sopenharmony_ci.global _longjmp
3570af302Sopenharmony_ci.global longjmp
4570af302Sopenharmony_ci.type _longjmp,%function
5570af302Sopenharmony_ci.type longjmp,%function
6570af302Sopenharmony_ci_longjmp:
7570af302Sopenharmony_cilongjmp:
8570af302Sopenharmony_ci	mov ip,r0
9570af302Sopenharmony_ci	movs r0,r1
10570af302Sopenharmony_ci	moveq r0,#1
11570af302Sopenharmony_ci	ldmia ip!, {v1,v2,v3,v4,v5,v6,sl,fp}
12570af302Sopenharmony_ci	ldmia ip!, {r2,lr}
13570af302Sopenharmony_ci	mov sp,r2
14570af302Sopenharmony_ci
15570af302Sopenharmony_ci	adr r1,1f
16570af302Sopenharmony_ci	ldr r2,1f
17570af302Sopenharmony_ci	ldr r1,[r1,r2]
18570af302Sopenharmony_ci
19570af302Sopenharmony_ci#if __ARM_ARCH < 8
20570af302Sopenharmony_ci	tst r1,#0x260
21570af302Sopenharmony_ci	beq 3f
22570af302Sopenharmony_ci	// HWCAP_ARM_FPA
23570af302Sopenharmony_ci	tst r1,#0x20
24570af302Sopenharmony_ci	beq 2f
25570af302Sopenharmony_ci	ldc p2, cr4, [ip], #48
26570af302Sopenharmony_ci#endif
27570af302Sopenharmony_ci2:	tst r1,#0x40
28570af302Sopenharmony_ci	beq 2f
29570af302Sopenharmony_ci	.fpu vfp
30570af302Sopenharmony_ci	vldmia ip!, {d8-d15}
31570af302Sopenharmony_ci	.fpu softvfp
32570af302Sopenharmony_ci	.eabi_attribute 10, 0
33570af302Sopenharmony_ci	.eabi_attribute 27, 0
34570af302Sopenharmony_ci#if __ARM_ARCH < 8
35570af302Sopenharmony_ci	// HWCAP_ARM_IWMMXT
36570af302Sopenharmony_ci2:	tst r1,#0x200
37570af302Sopenharmony_ci	beq 3f
38570af302Sopenharmony_ci	ldcl p1, cr10, [ip], #8
39570af302Sopenharmony_ci	ldcl p1, cr11, [ip], #8
40570af302Sopenharmony_ci	ldcl p1, cr12, [ip], #8
41570af302Sopenharmony_ci	ldcl p1, cr13, [ip], #8
42570af302Sopenharmony_ci	ldcl p1, cr14, [ip], #8
43570af302Sopenharmony_ci	ldcl p1, cr15, [ip], #8
44570af302Sopenharmony_ci#endif
45570af302Sopenharmony_ci2:
46570af302Sopenharmony_ci3:	bx lr
47570af302Sopenharmony_ci
48570af302Sopenharmony_ci.hidden __hwcap
49570af302Sopenharmony_ci.align 2
50570af302Sopenharmony_ci1:	.word __hwcap-1b
51