From: Michael Meissner Date: Thu, 7 May 1998 14:39:02 +0000 (+0000) Subject: Restore LR in case __eabi was called multiple times X-Git-Tag: prereleases/egcs-1.1-prerelease~1403 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a1b5a7e19329695ee7cfde2f262060d81c511c45;p=thirdparty%2Fgcc.git Restore LR in case __eabi was called multiple times From-SVN: r19612 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 36d43c037e2e..a772a8cbf513 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Thu May 7 17:38:03 1998 Michael Meissner + + * r6000/eabi.asm (__eabi): Restore LR in case __eabi is called + multiple times. + Thu May 7 14:26:05 1998 Kaveh R. Ghazi * aclocal.m4 (GCC_FUNC_VFPRINTF_DOPRNT): New macro. diff --git a/gcc/config/rs6000/eabi.asm b/gcc/config/rs6000/eabi.asm index f7bbeb220586..60bcfe2e4a03 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 */