diff -rNd -U3 gcc-2004-q3d-pristine/gcc/config/arm/linux-elf.h gcc-2004-q3d/gcc/config/arm/linux-elf.h
--- gcc-2004-q3d-pristine/gcc/config/arm/linux-elf.h	2004-05-15 16:02:09.000000000 +0300
+++ gcc-2004-q3d/gcc/config/arm/linux-elf.h	2005-03-03 20:15:30.696385250 +0200
@@ -31,15 +31,20 @@
 #define NO_IMPLICIT_EXTERN_C
 
 #undef  TARGET_DEFAULT
-#define TARGET_DEFAULT (0)
+#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_FRAME)
 
 #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6
 
+#undef  SUBTARGET_EXTRA_ASM_SPEC
+#define SUBTARGET_EXTRA_ASM_SPEC "\
+%{mhard-float:-mfpu=fpa} \
+%{!mhard-float: -mfpu=softfpa}"
+
 #define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux -p"
 
 #undef  MULTILIB_DEFAULTS
 #define MULTILIB_DEFAULTS \
-	{ "marm", "mlittle-endian", "mhard-float", "mno-thumb-interwork" }
+	{ "marm", "mlittle-endian", "mno-thumb-interwork" }
 
 /* The GNU C++ standard library requires that these macros be defined.  */
 #undef CPLUSPLUS_CPP_SPEC
diff -rNd -U3 gcc-2004-q3d-pristine/gcc/config/arm/t-linux gcc-2004-q3d/gcc/config/arm/t-linux
--- gcc-2004-q3d-pristine/gcc/config/arm/t-linux	2004-05-15 16:02:10.000000000 +0300
+++ gcc-2004-q3d/gcc/config/arm/t-linux	2005-03-03 20:16:49.033655090 +0200
@@ -6,6 +6,11 @@
 LIB1ASMSRC = arm/lib1funcs.asm
 LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx
 
+LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \
+    _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \
+    _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
+    _fixsfsi _fixunssfsi _floatdidf _floatdisf _floatsidf _floatsisf
+
 # MULTILIB_OPTIONS = mhard-float/msoft-float
 # MULTILIB_DIRNAMES = hard-float soft-float
 

