crti.asm (_init, _fini): Increase frame size to 64.
authorBob Wilson <bob.wilson@acm.org>
Wed, 23 Jul 2003 19:56:30 +0000 (19:56 +0000)
committerBob Wilson <bwilson@gcc.gnu.org>
Wed, 23 Jul 2003 19:56:30 +0000 (19:56 +0000)
        * config/xtensa/crti.asm (_init, _fini): Increase frame size to 64.
        * config/xtensa/lib1funcs.asm (__mulsi3, __udivsi3, __divsi3,
        __umodsi3, __modsi3): Increase frame size to 32.

From-SVN: r69719

gcc/ChangeLog
gcc/config/xtensa/crti.asm
gcc/config/xtensa/lib1funcs.asm

index 6e591f3e0964e2b5d7be0091a0f16f9a8d0da28d..2439b1da9441aa6f5811e45b3ef2ff73f2fd41bd 100644 (file)
@@ -1,3 +1,9 @@
+2003-07-23  Bob Wilson  <bob.wilson@acm.org>
+
+       * config/xtensa/crti.asm (_init, _fini): Increase frame size to 64.
+       * config/xtensa/lib1funcs.asm (__mulsi3, __udivsi3, __divsi3,
+       __umodsi3, __modsi3): Increase frame size to 32.
+
 2003-07-23  Geoffrey Keating  <geoffk@apple.com>
 
        * config/rs6000/host-darwin.c: ANSIfy, update comment for sigaltstack
index 8019ed1c3dbaeafb89d1d4a47469ec45cba437bc..8668b0d2409703c815c4b94a4542bfec0bdf2f47 100644 (file)
        .type _init,@function
        .align  4
 _init:
-       entry   sp, 40
+       entry   sp, 64
 
        .section .fini
        .globl _fini
        .type _fini,@function
        .align  4
 _fini:
-       entry   sp, 40
+       entry   sp, 64
index 72cd958841b28b7e8a03c7d5b5e13c4d493eb86c..632d56276da1568cc423a9d166f18ba5dd134d10 100644 (file)
@@ -30,8 +30,13 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 
 #include "xtensa-config.h"
 
-       # Define macros for the ABS and ADDX* instructions to handle cases
-       # where they are not included in the Xtensa processor configuration.
+# Note: These functions use a minimum stack frame size of 32.  This is
+# necessary for Xtensa configurations that only support a fixed register
+# window size of 8, where even leaf functions (such as these) need to
+# allocate space for a 4-word "extra save area".
+
+# Define macros for the ABS and ADDX* instructions to handle cases
+# where they are not included in the Xtensa processor configuration.
 
        .macro  do_abs dst, src, tmp
 #if XCHAL_HAVE_ABS
@@ -75,7 +80,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
        .global __mulsi3
        .type   __mulsi3,@function
 __mulsi3:
-       entry   sp, 16
+       entry   sp, 32
 
 #if XCHAL_HAVE_MUL16
        or      a4, a2, a3
@@ -174,11 +179,11 @@ __mulsi3:
 #endif /* L_mulsi3 */
 
 
-       # Define a macro for the NSAU (unsigned normalize shift amount)
-       # instruction, which computes the number of leading zero bits,
-       # to handle cases where it is not included in the Xtensa processor
-       # configuration.
-       
+# Define a macro for the NSAU (unsigned normalize shift amount)
+# instruction, which computes the number of leading zero bits,
+# to handle cases where it is not included in the Xtensa processor
+# configuration.
+
        .macro  do_nsau cnt, val, tmp, a
 #if XCHAL_HAVE_NSA
        nsau    \cnt, \val
@@ -237,7 +242,7 @@ __nsau_data:
        .global __udivsi3
        .type   __udivsi3,@function
 __udivsi3:
-       entry   sp, 16
+       entry   sp, 32
        bltui   a3, 2, .Lle_one # check if the divisor <= 1
 
        mov     a6, a2          # keep dividend in a6
@@ -296,7 +301,7 @@ __udivsi3:
        .global __divsi3
        .type   __divsi3,@function
 __divsi3:
-       entry   sp, 16
+       entry   sp, 32
        xor     a7, a2, a3      # sign = dividend ^ divisor
        do_abs  a6, a2, a4      # udividend = abs(dividend)
        do_abs  a3, a3, a4      # udivisor = abs(divisor)
@@ -361,7 +366,7 @@ __divsi3:
        .global __umodsi3
        .type   __umodsi3,@function
 __umodsi3:
-       entry   sp, 16
+       entry   sp, 32
        bltui   a3, 2, .Lle_one # check if the divisor is <= 1
 
        do_nsau a5, a2, a6, a7  # dividend_shift = nsau(dividend)
@@ -413,7 +418,7 @@ __umodsi3:
        .global __modsi3
        .type   __modsi3,@function
 __modsi3:
-       entry   sp, 16
+       entry   sp, 32
        mov     a7, a2          # save original (signed) dividend
        do_abs  a2, a2, a4      # udividend = abs(dividend)
        do_abs  a3, a3, a4      # udivisor = abs(divisor)