diff options
Diffstat (limited to 'newlib/libc/machine/arm/setjmp.S')
-rw-r--r-- | newlib/libc/machine/arm/setjmp.S | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/newlib/libc/machine/arm/setjmp.S b/newlib/libc/machine/arm/setjmp.S index 84e7cd70b..4bb2a46a7 100644 --- a/newlib/libc/machine/arm/setjmp.S +++ b/newlib/libc/machine/arm/setjmp.S @@ -120,7 +120,12 @@ SYM (\name): FUNC_START setjmp /* Save all the callee-preserved registers into the jump buffer. */ +#ifdef __thumb2__ + stmea a1!, { v1-v7, fp, ip, lr } + str sp, [a1],#+4 +#else stmea a1!, { v1-v7, fp, ip, sp, lr } +#endif #if 0 /* Simulator does not cope with FP instructions yet. */ #ifndef __SOFTFP__ @@ -142,7 +147,12 @@ SYM (\name): /* If we have stack extension code it ought to be handled here. */ /* Restore the registers, retrieving the state when setjmp() was called. */ +#ifdef __thumb2__ + ldmfd a1!, { v1-v7, fp, ip, lr } + ldr sp, [a1],#+4 +#else ldmfd a1!, { v1-v7, fp, ip, sp, lr } +#endif #if 0 /* Simulator does not cope with FP instructions yet. */ #ifndef __SOFTFP__ |