yann@402: diff -durN gcc-3.4.6.orig/gcc/config/arm/coff.h gcc-3.4.6/gcc/config/arm/coff.h yann@402: --- gcc-3.4.6.orig/gcc/config/arm/coff.h 2004-02-24 15:25:22.000000000 +0100 yann@402: +++ gcc-3.4.6/gcc/config/arm/coff.h 2007-08-15 23:10:54.000000000 +0200 yann@402: @@ -31,11 +31,16 @@ yann@402: #define TARGET_VERSION fputs (" (ARM/coff)", stderr) yann@402: yann@402: #undef TARGET_DEFAULT yann@402: -#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS) yann@402: +#define TARGET_DEFAULT \ yann@402: + ( ARM_FLAG_SOFT_FLOAT \ yann@402: + | ARM_FLAG_VFP \ yann@402: + | ARM_FLAG_APCS_32 \ yann@402: + | ARM_FLAG_APCS_FRAME \ yann@402: + | ARM_FLAG_MMU_TRAPS ) yann@402: yann@402: #ifndef MULTILIB_DEFAULTS yann@402: #define MULTILIB_DEFAULTS \ yann@402: - { "marm", "mlittle-endian", "msoft-float", "mapcs-32", "mno-thumb-interwork" } yann@402: + { "marm", "mlittle-endian", "mapcs-32", "mno-thumb-interwork" } yann@402: #endif yann@402: yann@402: /* This is COFF, but prefer stabs. */ yann@402: diff -durN gcc-3.4.6.orig/gcc/config/arm/elf.h gcc-3.4.6/gcc/config/arm/elf.h yann@402: --- gcc-3.4.6.orig/gcc/config/arm/elf.h 2004-02-24 15:25:22.000000000 +0100 yann@402: +++ gcc-3.4.6/gcc/config/arm/elf.h 2007-08-15 23:10:54.000000000 +0200 yann@402: @@ -46,7 +46,9 @@ yann@402: yann@402: #ifndef SUBTARGET_ASM_FLOAT_SPEC yann@402: #define SUBTARGET_ASM_FLOAT_SPEC "\ yann@402: -%{mapcs-float:-mfloat} %{msoft-float:-mfpu=softfpa}" yann@402: +%{mapcs-float:-mfloat} \ yann@402: +%{mhard-float:-mfpu=fpa} \ yann@402: +%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}" yann@402: #endif yann@402: yann@402: #ifndef ASM_SPEC yann@402: @@ -106,12 +108,17 @@ yann@402: #endif yann@402: yann@402: #ifndef TARGET_DEFAULT yann@402: -#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS) yann@402: +#define TARGET_DEFAULT \ yann@402: + ( ARM_FLAG_SOFT_FLOAT \ yann@402: + | ARM_FLAG_VFP \ yann@402: + | ARM_FLAG_APCS_32 \ yann@402: + | ARM_FLAG_APCS_FRAME \ yann@402: + | ARM_FLAG_MMU_TRAPS ) yann@402: #endif yann@402: yann@402: #ifndef MULTILIB_DEFAULTS yann@402: #define MULTILIB_DEFAULTS \ yann@402: - { "marm", "mlittle-endian", "msoft-float", "mapcs-32", "mno-thumb-interwork", "fno-leading-underscore" } yann@402: + { "marm", "mlittle-endian", "mapcs-32", "mno-thumb-interwork", "fno-leading-underscore" } yann@402: #endif yann@402: yann@402: #define TARGET_ASM_FILE_START_APP_OFF true yann@402: diff -durN gcc-3.4.6.orig/gcc/config/arm/linux-elf.h gcc-3.4.6/gcc/config/arm/linux-elf.h yann@402: --- gcc-3.4.6.orig/gcc/config/arm/linux-elf.h 2007-08-15 23:07:00.000000000 +0200 yann@402: +++ gcc-3.4.6/gcc/config/arm/linux-elf.h 2007-08-15 23:10:54.000000000 +0200 yann@402: @@ -44,12 +44,26 @@ yann@402: #define TARGET_LINKER_EMULATION "armelf_linux" yann@402: #endif yann@402: yann@402: -/* Default is to use APCS-32 mode. */ yann@402: +/* yann@402: + * Default is to use APCS-32 mode with soft-vfp. yann@402: + * The old Linux default for floats can be achieved with -mhard-float yann@402: + * or with the configure --with-float=hard option. yann@402: + * If -msoft-float or --with-float=soft is used then software float yann@402: + * support will be used just like the default but with the legacy yann@402: + * big endian word ordering for double float representation instead. yann@402: + */ yann@402: #undef TARGET_DEFAULT yann@402: -#define TARGET_DEFAULT \ yann@402: - ( ARM_FLAG_APCS_32 | \ yann@402: - ARM_FLAG_MMU_TRAPS | \ yann@402: - TARGET_ENDIAN_DEFAULT ) yann@402: +#define TARGET_DEFAULT \ yann@402: + ( ARM_FLAG_APCS_32 \ yann@402: + | ARM_FLAG_SOFT_FLOAT \ yann@402: + | TARGET_ENDIAN_DEFAULT \ yann@402: + | ARM_FLAG_VFP \ yann@402: + | ARM_FLAG_MMU_TRAPS ) yann@402: + yann@402: +#undef SUBTARGET_EXTRA_ASM_SPEC yann@402: +#define SUBTARGET_EXTRA_ASM_SPEC "\ yann@402: +%{mhard-float:-mfpu=fpa} \ yann@402: +%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}" yann@402: yann@402: #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6 yann@402: yann@402: @@ -57,7 +71,7 @@ yann@402: yann@402: #undef MULTILIB_DEFAULTS yann@402: #define MULTILIB_DEFAULTS \ yann@402: - { "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mapcs-32", "mno-thumb-interwork" } yann@402: + { "marm", TARGET_ENDIAN_OPTION, "mapcs-32", "mno-thumb-interwork" } yann@402: yann@402: #define CPP_APCS_PC_DEFAULT_SPEC "-D__APCS_32__" yann@402: yann@402: @@ -72,7 +86,7 @@ yann@402: %{shared:-lc} \ yann@402: %{!shared:%{profile:-lc_p}%{!profile:-lc}}" yann@402: yann@402: -#define LIBGCC_SPEC "%{msoft-float:-lfloat} -lgcc" yann@402: +#define LIBGCC_SPEC "-lgcc" yann@402: yann@402: /* Provide a STARTFILE_SPEC appropriate for GNU/Linux. Here we add yann@402: the GNU/Linux magical crtbegin.o file (see crtstuff.c) which yann@402: diff -durN gcc-3.4.6.orig/gcc/config/arm/t-linux gcc-3.4.6/gcc/config/arm/t-linux yann@402: --- gcc-3.4.6.orig/gcc/config/arm/t-linux 2003-09-20 23:09:07.000000000 +0200 yann@402: +++ gcc-3.4.6/gcc/config/arm/t-linux 2007-08-15 23:10:54.000000000 +0200 yann@402: @@ -4,7 +4,10 @@ yann@402: LIBGCC2_DEBUG_CFLAGS = -g0 yann@402: yann@402: LIB1ASMSRC = arm/lib1funcs.asm yann@402: -LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx yann@402: +LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \ yann@402: + _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \ yann@402: + _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \ yann@402: + _fixsfsi _fixunssfsi yann@402: yann@402: # MULTILIB_OPTIONS = mhard-float/msoft-float yann@402: # MULTILIB_DIRNAMES = hard-float soft-float yann@402: diff -durN gcc-3.4.6.orig/gcc/config/arm/unknown-elf.h gcc-3.4.6/gcc/config/arm/unknown-elf.h yann@402: --- gcc-3.4.6.orig/gcc/config/arm/unknown-elf.h 2004-02-24 15:25:22.000000000 +0100 yann@402: +++ gcc-3.4.6/gcc/config/arm/unknown-elf.h 2007-08-15 23:10:54.000000000 +0200 yann@402: @@ -30,7 +30,12 @@ yann@402: yann@402: /* Default to using APCS-32 and software floating point. */ yann@402: #ifndef TARGET_DEFAULT yann@402: -#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS) yann@402: +#define TARGET_DEFAULT \ yann@402: + ( ARM_FLAG_SOFT_FLOAT \ yann@402: + | ARM_FLAG_VFP \ yann@402: + | ARM_FLAG_APCS_32 \ yann@402: + | ARM_FLAG_APCS_FRAME \ yann@402: + | ARM_FLAG_MMU_TRAPS ) yann@402: #endif yann@402: yann@402: /* Now we define the strings used to build the spec file. */ yann@402: diff -durN gcc-3.4.6.orig/gcc/config/arm/xscale-elf.h gcc-3.4.6/gcc/config/arm/xscale-elf.h yann@402: --- gcc-3.4.6.orig/gcc/config/arm/xscale-elf.h 2003-07-02 01:26:43.000000000 +0200 yann@402: +++ gcc-3.4.6/gcc/config/arm/xscale-elf.h 2007-08-15 23:10:54.000000000 +0200 yann@402: @@ -49,11 +49,12 @@ yann@402: endian, regardless of the endian-ness of the memory yann@402: system. */ yann@402: yann@402: -#define SUBTARGET_EXTRA_ASM_SPEC "%{!mcpu=*:-mcpu=xscale} \ yann@402: - %{mhard-float:-mfpu=fpa} \ yann@402: - %{!mhard-float: %{msoft-float:-mfpu=softfpa;:-mfpu=softvfp}}" yann@402: +#define SUBTARGET_EXTRA_ASM_SPEC "\ yann@402: +%{!mcpu=*:-mcpu=xscale} \ yann@402: +%{mhard-float:-mfpu=fpa} \ yann@402: +%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}" yann@402: yann@402: #ifndef MULTILIB_DEFAULTS yann@402: #define MULTILIB_DEFAULTS \ yann@402: - { "mlittle-endian", "mno-thumb-interwork", "marm", "msoft-float" } yann@402: + { "mlittle-endian", "mno-thumb-interwork", "marm" } yann@402: #endif