diff options
author | Richard Earnshaw <rearnsha@arm.com> | 2007-12-13 01:03:53 +0000 |
---|---|---|
committer | Paul Brook <pbrook@gcc.gnu.org> | 2007-12-13 01:03:53 +0000 |
commit | fe9e53421889ec5d5c360107a8b9c80b95cbebcf (patch) | |
tree | e8beed52f961a52088ac36e53afe0300064912a5 | |
parent | dce3aa507829714fb9e05764ac1124a14a7966b8 (diff) | |
download | gcc-fe9e53421889ec5d5c360107a8b9c80b95cbebcf.zip gcc-fe9e53421889ec5d5c360107a8b9c80b95cbebcf.tar.gz gcc-fe9e53421889ec5d5c360107a8b9c80b95cbebcf.tar.bz2 |
re PR target/30192 ([arm] Wrong sp value on exit after calling __floatdidf or __floatundidf)
2007-12-13 Richard Earnshaw <rearnsha@arm.com>
PR target/30192
* config/arm/ieee754-df.S (floatundidf): Fix for wrong sp value on
exit when using hard FPA.
* config/arm/ieee754-df.S (floatdidf): Likewise.
From-SVN: r130800
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/arm/ieee754-df.S | 6 |
2 files changed, 11 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7ce7d8c..32dbb6e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2007-12-13 Richard Earnshaw <rearnsha@arm.com> + + PR target/30192 + * config/arm/ieee754-df.S (floatundidf): Fix for wrong sp value on + exit when using hard FPA. + * config/arm/ieee754-df.S (floatdidf): Likewise. + 2007-12-12 Jakub Jelinek <jakub@redhat.com> PR bootstrap/30589 diff --git a/gcc/config/arm/ieee754-df.S b/gcc/config/arm/ieee754-df.S index 76cbb6e..b866e67 100644 --- a/gcc/config/arm/ieee754-df.S +++ b/gcc/config/arm/ieee754-df.S @@ -512,7 +512,8 @@ ARM_FUNC_ALIAS aeabi_ul2d floatundidf @ we can return the result in f0 as well as in r0/r1 for backwards @ compatibility. adr ip, LSYM(f0_ret) - do_push {r4, r5, ip, lr} + @ Push pc as well so that RETLDM works correctly. + do_push {r4, r5, ip, lr, pc} #else do_push {r4, r5, lr} #endif @@ -537,7 +538,8 @@ ARM_FUNC_ALIAS aeabi_l2d floatdidf @ we can return the result in f0 as well as in r0/r1 for backwards @ compatibility. adr ip, LSYM(f0_ret) - do_push {r4, r5, ip, lr} + @ Push pc as well so that RETLDM works correctly. + do_push {r4, r5, ip, lr, pc} #else do_push {r4, r5, lr} #endif |