patches/gcc/4.2.1/270-soft-float.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue Oct 14 17:42:10 2008 +0000 (2008-10-14)
changeset 929 7c958fb04f28
parent 616 6e78f7085707
permissions -rw-r--r--
Sample config for e500v2 toolchain

On Tuesday 14 October 2008 17:05:31 Nate Case wrote:
> This is a sample config file for Freescale e500v2 processors (e.g.,
> MPC8548, MPC8572). It uses eglibc (for e500/SPE patches) and a recent
> gcc (4.3.1, for e500v2 DPFP support) and will generate appropriate
> dual-precision floating point instructions by default.
>
> Note: If building a Linux kernel with this toolchain, you will want to
> make sure -mno-spe AND -mspe=no are passed to gcc to prevent SPE
> ABI/instructions from getting into the kernel (which is currently
> unsupported). At this time, the kernel build system only passes
> -mno-spe by default (this should be fixed soon hopefully).
>
> A binutils snapshot is used to fix a bug present in 2.18 preventing
> U-Boot from being compiled (CodeSourcery issue #2297: internal.h
> (ELF_IS_SECTION_IN_SEGMENT): Adjust to cope with segments at the end of
> memory).

Obsoletes the powerpc-unknown-linux-gnuspe sample, so remove it.

/trunk/samples/powerpc-e500v2-linux-gnuspe/crosstool.config | 307 307 0 0 +++++++++++++++++++
1 file changed, 307 insertions(+)
     1 diff -uNpr gcc-4.2.1_orig/gcc/config/rs6000/darwin-ldouble.c gcc-4.2.1/gcc/config/rs6000/darwin-ldouble.c
     2 --- gcc-4.2.1_orig/gcc/config/rs6000/darwin-ldouble.c	2007-03-05 11:54:00.000000000 -0500
     3 +++ gcc-4.2.1/gcc/config/rs6000/darwin-ldouble.c	2008-01-31 17:51:24.000000000 -0500
     4 @@ -70,6 +70,8 @@ Software Foundation, 51 Franklin Street,
     5     but GCC currently generates poor code when a union is used to turn
     6     a long double into a pair of doubles.  */
     7  
     8 +#if defined (_SOFT_FLOAT) && defined (__LONG_DOUBLE_128__)
     9 +
    10  long double __gcc_qadd (double, double, double, double);
    11  long double __gcc_qsub (double, double, double, double);
    12  long double __gcc_qmul (double, double, double, double);
    13 @@ -219,8 +221,6 @@ __gcc_qdiv (double a, double b, double c
    14    return z.ldval;
    15  }
    16  
    17 -#if defined (_SOFT_FLOAT) && defined (__LONG_DOUBLE_128__)
    18 -
    19  long double __gcc_qneg (double, double);
    20  int __gcc_qeq (double, double, double, double);
    21  int __gcc_qne (double, double, double, double);