aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMichael Meissner <meissner@cygnus.com>1998-05-07 14:39:02 +0000
committerMichael Meissner <meissner@gcc.gnu.org>1998-05-07 14:39:02 +0000
commita1b5a7e19329695ee7cfde2f262060d81c511c45 (patch)
treeb4480ba98614a829eb3acf92fe3c401dc0b1eaa5 /gcc
parent3474f46290510e6238e03e61d499afa14a5376e9 (diff)
downloadgcc-a1b5a7e19329695ee7cfde2f262060d81c511c45.zip
gcc-a1b5a7e19329695ee7cfde2f262060d81c511c45.tar.gz
gcc-a1b5a7e19329695ee7cfde2f262060d81c511c45.tar.bz2
Restore LR in case __eabi was called multiple times
From-SVN: r19612
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/rs6000/eabi.asm1
2 files changed, 6 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 36d43c0..a772a8c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Thu May 7 17:38:03 1998 Michael Meissner <meissner@cygnus.com>
+
+ * r6000/eabi.asm (__eabi): Restore LR in case __eabi is called
+ multiple times.
+
Thu May 7 14:26:05 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* aclocal.m4 (GCC_FUNC_VFPRINTF_DOPRNT): New macro.
diff --git a/gcc/config/rs6000/eabi.asm b/gcc/config/rs6000/eabi.asm
index f7bbeb2..60bcfe2 100644
--- a/gcc/config/rs6000/eabi.asm
+++ b/gcc/config/rs6000/eabi.asm
@@ -152,6 +152,7 @@ FUNC_START(__eabi)
subf. 12,12,11 /* calculate difference */
lwzx 9,10,12 /* done flag */
cmplwi 2,9,0 /* init flag != 0? */
+ mtlr 0 /* restore in case branch was taken */
bnelr 2 /* return now, if we've been called already */
stwx 1,10,12 /* store a non-zero value in the done flag */
beq+ 0,.Lsdata /* skip if we don't need to relocate */