diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 286f5f28520..83c6035f436 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2007-01-18 Julian Brown + Richard Sandiford + + * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire. + (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise. + * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine + before redefining. + * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to + 80 unconditionally. + (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise. + 2007-01-18 Richard Sandiford * doc/install.texi: Document m68k-uclinuxoldabi. diff --git a/gcc/config/m68k/m68k.h b/gcc/config/m68k/m68k.h index 17105b5db44..772943af8d8 100644 --- a/gcc/config/m68k/m68k.h +++ b/gcc/config/m68k/m68k.h @@ -259,7 +259,17 @@ Boston, MA 02110-1301, USA. */ /* target machine storage layout */ -#define LONG_DOUBLE_TYPE_SIZE 80 +/* "long double" is the same as "double" on ColdFire targets. */ + +#define LONG_DOUBLE_TYPE_SIZE (TARGET_COLDFIRE ? 64 : 80) + +/* We need to know the size of long double at compile-time in libgcc2. */ + +#ifdef __mcoldfire__ +#define LIBGCC2_LONG_DOUBLE_TYPE_SIZE 64 +#else +#define LIBGCC2_LONG_DOUBLE_TYPE_SIZE 80 +#endif /* Set the value of FLT_EVAL_METHOD in float.h. When using 68040 fp instructions, we get proper intermediate rounding, otherwise we diff --git a/gcc/config/m68k/netbsd-elf.h b/gcc/config/m68k/netbsd-elf.h index c8dd1b9af34..e37bea0a629 100644 --- a/gcc/config/m68k/netbsd-elf.h +++ b/gcc/config/m68k/netbsd-elf.h @@ -40,6 +40,7 @@ Boston, MA 02110-1301, USA. */ #undef LONG_DOUBLE_TYPE_SIZE #define LONG_DOUBLE_TYPE_SIZE (TARGET_68020 ? 80 : 64) +#undef LIBGCC2_LONG_DOUBLE_TYPE_SIZE #ifdef __mc68010__ #define LIBGCC2_LONG_DOUBLE_TYPE_SIZE 64 #else diff --git a/gcc/config/m68k/uclinux-oldabi.h b/gcc/config/m68k/uclinux-oldabi.h index 82124f9619e..6e4746054c9 100644 --- a/gcc/config/m68k/uclinux-oldabi.h +++ b/gcc/config/m68k/uclinux-oldabi.h @@ -22,6 +22,12 @@ the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ +/* The old uClinux ABI used 80-byte "long double"s for ColdFire too. */ +#undef LONG_DOUBLE_TYPE_SIZE +#define LONG_DOUBLE_TYPE_SIZE 80 +#undef LIBGCC2_LONG_DOUBLE_TYPE_SIZE +#define LIBGCC2_LONG_DOUBLE_TYPE_SIZE 80 + /* Undo the definition of STARTFILE_SPEC from m68kelf.h so we'll pick the default from gcc.c (just link crt0.o from multilib dir). */ #undef STARTFILE_SPEC