setjmp/longjmp: Also store *(SysBase->ThisTask->tc_SPLower) in jmpbuf
[AROS.git] / arch / arm-all / clib / vfork.s
blob2064bdb3b7228b8e20fe250ca656a1573a15b7cb
1 /*
2 * vfork.s
4 * Created on: Aug 5, 2009
5 * Author: misc
7 * $Id$
8 */
10 #include "aros/arm/asm.h"
12 .text
13 .align 2
14 .global AROS_CDEFNAME(vfork)
15 .type AROS_CDEFNAME(vfork),%function
17 #error jmpbuf size has changed !
18 AROS_CDEFNAME(vfork):
19 str lr, [sp, #-4]! /* Store link register */
20 sub sp, sp, #260 /* Create space for env structure */
21 mov r0, sp
22 bl setjmp /* Prepare setjmp */
24 ldr r0, [sp, #264] /* restore link register */
25 str r0, [sp, #0*4] /* save lr as first argument of env structure */
27 add r0, sp, #264 /* save previous stack pointer into env structure */
28 str r0, [sp, #9*4]
30 b __vfork /* never return... */