aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorSandra Loosemore <sandra@codesourcery.com>2007-09-14 14:35:12 -0400
committerSandra Loosemore <sandra@gcc.gnu.org>2007-09-14 14:35:12 -0400
commit56e449d39af4a5c032d8d1f2825182ebed7a1a75 (patch)
tree16301c9c22fd4a89593267534d7bb3be2bc2087f /gcc/config
parentc417817a8575731e1e10ddf063d25d9c4cdde12a (diff)
downloadgcc-56e449d39af4a5c032d8d1f2825182ebed7a1a75.zip
gcc-56e449d39af4a5c032d8d1f2825182ebed7a1a75.tar.gz
gcc-56e449d39af4a5c032d8d1f2825182ebed7a1a75.tar.bz2
tm.texi (LIBGCC2_UNWIND_ATTRIBUTE): Document.
2007-09-14 Sandra Loosemore <sandra@codesourcery.com> Nigel Stephens <nigel@mips.com> gcc/ * doc/tm.texi (LIBGCC2_UNWIND_ATTRIBUTE): Document. * unwind-generic.h (LIBGCC2_UNWIND_ATTRIBUTE): Define. (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE to declaration. (_Unwind_ForcedUnwind): Likewise. (_Unwind_Resume): Likewise. (_Unwind_Resume_or_Rethrow): Likewise. (_Unwind_Backtrace): Likewise. (_Unwind_SjLj_RaiseException): Likewise. (_Unwind_SjLj_ForcedUnwind): Likewise. (_Unwind_SjLj_Resume): Likewise. (_Unwind_SjLj_Resume_or_Rethrow): Likewise. * unwind.inc (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE to definition. (_Unwind_ForcedUnwind): Likewise. (_Unwind_Resume): Likewise. (_Unwind_Resume_or_Rethrow): Likewise. (_Unwind_Backtrace): Likewise. * unwind-compat.c (_Unwind_Backtrace): Likewise. (_Unwind_ForcedUnwind): Likewise. (_Unwind_RaiseException): Likewise. (_Unwind_Resume): Likewise. (_Unwind_Resume_or_Rethrow): Likewise. * config/mips/mips.h (LIBGCC2_UNWIND_ATTRIBUTE): Define to force nomips16 mode when IN_LIBGCC2 with hard float. Co-Authored-By: Nigel Stephens <nigel@mips.com> From-SVN: r128501
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/mips/mips.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h
index 55e605a..0d23e56 100644
--- a/gcc/config/mips/mips.h
+++ b/gcc/config/mips/mips.h
@@ -582,6 +582,17 @@ extern enum mips_llsc_setting mips_llsc;
#endif
#endif /* IN_LIBGCC2 */
+/* Force the call stack unwinders in unwind.inc not to be MIPS16 code
+ when compiled with hardware floating point. This is because MIPS16
+ code cannot save and restore the floating-point registers, which is
+ important if in a mixed MIPS16/non-MIPS16 environment. */
+
+#ifdef IN_LIBGCC2
+#if __mips_hard_float
+#define LIBGCC2_UNWIND_ATTRIBUTE __attribute__((__nomips16__))
+#endif
+#endif /* IN_LIBGCC2 */
+
#define TARGET_LIBGCC_SDATA_SECTION ".sdata"
#ifndef MULTILIB_ENDIAN_DEFAULT