revert between 56095 -> 55830 in arch
[AROS.git] / arch / arm-all / posixc / sigsetjmp.s
blobcf575e75707ee418c73872af2ccfe9ff738e517b
1 /*
2 Copyright © 2015, The AROS Development Team. All rights reserved.
3 $Id$
5 Desc: ANSI C function sigsetjmp()
6 Lang: english
7 */
9 #include "aros/arm/asm.h"
11 .text
12 .align 2
13 .global AROS_CDEFNAME(sigsetjmp)
14 .type AROS_CDEFNAME(sigsetjmp),%function
16 AROS_CDEFNAME(sigsetjmp):
17 mov ip, r0 /* Get the env address */
18 str lr, [ip], #4 /* store return address explicitly */
19 stmia ip!, {r4, r5, r6, r7, r8, r9, sl, fp, sp} /* store non-scratch regs */
20 mov r0, #0 /* return zero */
21 #ifdef __SOFTFP__
22 ldr r1, 1f
23 ldr r1, [r1]
24 mov r2, AttnFlags
25 ldrh r1, [r1, r2]
26 tst r1, AFF_FPU
27 bxeq lr
28 #endif
29 fstmiax ip!, {d8-d15} /* Store VFP registers - we assume they are available! */
30 fmrx r2, fpscr /* VFP condition codes */
31 str r2, [ip], #4
32 bx lr
33 #ifdef __SOFTFP__
34 1: .word SysBase
35 #endif