diff options
author | Nick Clifton <nickc@redhat.com> | 2008-04-25 09:02:40 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2008-04-25 09:02:40 +0000 |
commit | 026f9d290f5fe85fe9bd3a56be378fc794e28473 (patch) | |
tree | 74d43a750f151e7dee8263635d624071a0a081fb /newlib/libc/machine | |
parent | 4214d0c04c5a349e57df5cd9ff14533da94f14c3 (diff) | |
download | cygnal-026f9d290f5fe85fe9bd3a56be378fc794e28473.tar.gz cygnal-026f9d290f5fe85fe9bd3a56be378fc794e28473.tar.bz2 cygnal-026f9d290f5fe85fe9bd3a56be378fc794e28473.zip |
* libc/machine/arm/setjmp.S: Fix thumb2 support.
* arm/crt0.S: Allow assembly under ARMv7 ISA. Support for
initializing stack pointers for interrupt modes is still pending.
Diffstat (limited to 'newlib/libc/machine')
-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__ |