1
0
mirror of https://github.com/deadw00d/AROS.git synced 2026-03-19 11:39:53 +00:00
Files
AROS-v0/arch/arm-all/posixc/vfork_longjmp.s
2025-08-14 07:30:11 +02:00

39 lines
908 B
ArmAsm

/*
* vfork_longjmp.s
*
* Created on: Aug 5, 2009
* Author: misc
*
* $Id$
*/
#include "aros/arm/asm.h"
.text
.align 2
.global AROS_CDEFNAME(vfork_longjmp)
.type AROS_CDEFNAME(vfork_longjmp),%function
AROS_CDEFNAME(vfork_longjmp):
mov ip, r0 /* env into ip register */
ldr lr, [ip], #4 /* restore return address */
mov r0, r1 /* return value from longjmp into r0 and generate condition code */
ldmia ip!, {r4, r5, r6, r7, r8, r9, sl, fp, sp} /* restore non-scratch regs */
#ifdef __SOFTFP__
ldr r1, 1f
ldr r1, [r1]
mov r2, AttnFlags
ldrh r1, [r1, r2]
tst r1, AFF_FPU
bxeq lr
#endif
#if defined(__VFP_FP__) && !defined(__SOFTFP__)
fldmiax ip!, {d8-d15} /* Restore VFP registers - we assume they are available! */
ldr r1, [ip], #4 /* restore VFP status reg */
fmxr fpscr, r1
#endif
bx lr /* Done! */
#ifdef __SOFTFP__
1: .word SysBase
#endif