From 5900080d7dd3e805415b6cd063d5a3707026042d Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Wed, 13 May 2009 18:31:55 +0000 Subject: [PATCH] 2009-05-13 Paul Brook * libc/machine/arm/setjmp.S: Don't bother saving IP. Copy SP to IP before saving. Likewise when restoring. --- newlib/ChangeLog | 5 +++++ newlib/libc/machine/arm/setjmp.S | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/newlib/ChangeLog b/newlib/ChangeLog index 01f0107ab..e7b3680d1 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,8 @@ +2009-05-13 Paul Brook + + * libc/machine/arm/setjmp.S: Don't bother saving IP. Copy SP to + IP before saving. Likewise when restoring. + 2009-05-13 Paul Brook * libc/machine/arm/setjmp.S: Add ARMv6-M implementation. diff --git a/newlib/libc/machine/arm/setjmp.S b/newlib/libc/machine/arm/setjmp.S index 2181a1874..a65fbabb9 100644 --- a/newlib/libc/machine/arm/setjmp.S +++ b/newlib/libc/machine/arm/setjmp.S @@ -170,8 +170,8 @@ SYM (\name): /* Save all the callee-preserved registers into the jump buffer. */ #ifdef __thumb2__ + mov ip, sp stmea a1!, { v1-v7, fp, ip, lr } - str sp, [a1],#+4 #else stmea a1!, { v1-v7, fp, ip, sp, lr } #endif @@ -198,7 +198,7 @@ SYM (\name): /* Restore the registers, retrieving the state when setjmp() was called. */ #ifdef __thumb2__ ldmfd a1!, { v1-v7, fp, ip, lr } - ldr sp, [a1],#+4 + mov sp, ip #else ldmfd a1!, { v1-v7, fp, ip, sp, lr } #endif