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