diff -Naur gcc-cs2007q3-51.orig/gcc/config/arm/linux-eabi.h gcc-cs2007q3-51/gcc/config/arm/linux-eabi.h
--- gcc-cs2007q3-51.orig/gcc/config/arm/linux-eabi.h	2008-06-07 21:27:36.000000000 -0400
+++ gcc-cs2007q3-51/gcc/config/arm/linux-eabi.h	2008-06-07 21:28:20.000000000 -0400
@@ -77,8 +77,3 @@
 		    : "0" (_beg), "r" (_end), "r" (_flg), "r" (_scno));	\
 }
 
-#undef SYSROOT_SUFFIX_SPEC
-#define SYSROOT_SUFFIX_SPEC \
-  "%{march=armv4t:/armv4t ; mcpu=marvell-f:/marvell-f ;" \
-  "  march=armv7*:%{mthumb:/thumb2} ;" \
-  "  mcpu=cortex*:%{mthumb:/thumb2} }"
diff -Naur gcc-cs2007q3-51.orig/gcc/config/arm/t-arm-elf gcc-cs2007q3-51/gcc/config/arm/t-arm-elf
--- gcc-cs2007q3-51.orig/gcc/config/arm/t-arm-elf	2008-06-07 21:27:36.000000000 -0400
+++ gcc-cs2007q3-51/gcc/config/arm/t-arm-elf	2008-06-07 21:34:06.000000000 -0400
@@ -1,8 +1,4 @@
 LIB1ASMSRC = arm/lib1funcs.asm
-# For most CPUs we have an assembly soft-float implementations.
-# However this is not true for ARMv6M.  Here we want to use the soft-fp C
-# implementation.  The soft-fp code is only build for ARMv6M.  This pulls
-# in the asm implementation for other CPUs.
 LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func \
 	_call_via_rX _interwork_call_via_rX \
 	_lshrdi3 _ashrdi3 _ashldi3 \
@@ -12,35 +8,21 @@
 	_arm_cmpsf2 _arm_unordsf2 _arm_fixsfsi _arm_fixunssfsi \
 	_arm_floatdidf _arm_floatdisf _arm_floatundidf _arm_floatundisf
 
-MULTILIB_OPTIONS     = mthumb
-MULTILIB_DIRNAMES    = thumb
+
+MULTILIB_OPTIONS     = marm/mthumb
+MULTILIB_DIRNAMES    = arm thumb
 MULTILIB_EXCEPTIONS  = 
 MULTILIB_MATCHES     =
 
-MULTILIB_OPTIONS      += march=armv7/mcpu=marvell-f/march=armv6-m
-MULTILIB_DIRNAMES     += thumb2 marvell-f armv6-m
-MULTILIB_EXCEPTIONS   += march=armv7*
-MULTILIB_MATCHES      += march?armv7=march?armv7a
-MULTILIB_MATCHES      += march?armv7=march?armv7r
-MULTILIB_MATCHES      += march?armv7=march?armv7m
-MULTILIB_MATCHES      += march?armv7=march?armv7-a
-MULTILIB_MATCHES      += march?armv7=march?armv7-r
-MULTILIB_MATCHES      += march?armv7=march?armv7-m
-MULTILIB_MATCHES      += march?armv7=mcpu?cortex-a8
-MULTILIB_MATCHES      += march?armv7=mcpu?cortex-r4
-MULTILIB_MATCHES      += march?armv7=mcpu?cortex-m3
-
-MULTILIB_EXCEPTIONS   += *mthumb/*mcpu?marvell-f*
-
-MULTILIB_EXCEPTIONS   += march=armv6-m*
-MULTILIB_MATCHES      += march?armv6-m=mcpu?cortex-m1
-
-# As of at least 4.2, gcc passes the wrong -L options if some multilibs are
-# omitted from MULTILIB_OSDIRNAMES
-MULTILIB_OSDIRNAMES    = mthumb=!thumb
-MULTILIB_OSDIRNAMES   += mcpu.marvell-f=!marvell-f
-MULTILIB_OSDIRNAMES   += mthumb/march.armv7=!thumb2
-MULTILIB_OSDIRNAMES   += mthumb/march.armv6-m=!armv6-m
+#MULTILIB_OPTIONS      += march=armv7
+#MULTILIB_DIRNAMES     += thumb2
+#MULTILIB_EXCEPTIONS   += march=armv7* marm/*march=armv7*
+#MULTILIB_MATCHES      += march?armv7=march?armv7-a
+#MULTILIB_MATCHES      += march?armv7=march?armv7-r
+#MULTILIB_MATCHES      += march?armv7=march?armv7-m
+#MULTILIB_MATCHES      += march?armv7=mcpu?cortex-a8
+#MULTILIB_MATCHES      += march?armv7=mcpu?cortex-r4
+#MULTILIB_MATCHES      += march?armv7=mcpu?cortex-m3
 
 # MULTILIB_OPTIONS    += mcpu=ep9312
 # MULTILIB_DIRNAMES   += ep9312
diff -Naur gcc-cs2007q3-51.orig/gcc/config/arm/timesys-linux.h gcc-cs2007q3-51/gcc/config/arm/timesys-linux.h
--- gcc-cs2007q3-51.orig/gcc/config/arm/timesys-linux.h	2008-06-07 21:27:36.000000000 -0400
+++ gcc-cs2007q3-51/gcc/config/arm/timesys-linux.h	2008-06-07 21:36:08.000000000 -0400
@@ -19,9 +19,3 @@
    along with GCC; see the file COPYING3.  If not see
    <http://www.gnu.org/licenses/>.  */
 
-/* FIXME:We should be dynamically creating this from the makefile.
-   See m68k for an example.  */
-#undef SYSROOT_SUFFIX_SPEC
-#define SYSROOT_SUFFIX_SPEC \
-  "%{march=armv5t:/armv5t ; march=armv6:/armv6 ;" \
-  "  mcpu=xscale*:/xscale}%{mbig-endian:/be}"
diff -Naur gcc-cs2007q3-51.orig/gcc/config/arm/t-linux-eabi gcc-cs2007q3-51/gcc/config/arm/t-linux-eabi
--- gcc-cs2007q3-51.orig/gcc/config/arm/t-linux-eabi	2008-06-07 21:27:36.000000000 -0400
+++ gcc-cs2007q3-51/gcc/config/arm/t-linux-eabi	2008-06-07 21:30:30.000000000 -0400
@@ -1,35 +1,10 @@
 # These functions are included in shared libraries.
 TARGET_LIBGCC2_CFLAGS = -fPIC
 
-# We build 4 multilibs:
-#  ./		  (default)
-#  armv4t/	  -march=armv4t
-#  marvell-f/	  -mcpu=marvell-f
-#  thumb2/	  -mthumb -march=armv7
-MULTILIB_OPTIONS     = mthumb
-MULTILIB_DIRNAMES    = thumb
-MULTILIB_OPTIONS    += march=armv4t/mcpu=marvell-f/march=armv7
-MULTILIB_DIRNAMES   += armv4t marvell-f armv7
-MULTILIB_EXCEPTIONS += *mthumb/*mcpu?marvell-f*
-MULTILIB_EXCEPTIONS += *mthumb/*march?armv4t*
-MULTILIB_EXCEPTIONS += march=armv7*
-MULTILIB_EXCEPTIONS += mthumb
-
-# As of at least 4.2, gcc passes the wrong -L options if some multilibs are
-# omitted from MULTILIB_OSDIRNAMES
-MULTILIB_OSDIRNAMES    = mcpu.marvell-f=!marvell-f
-MULTILIB_OSDIRNAMES   += march.armv4t=!armv4t
-MULTILIB_OSDIRNAMES   += mthumb/march.armv7=!thumb2
-
-MULTILIB_MATCHES      += march?armv7=march?armv7a
-MULTILIB_MATCHES      += march?armv7=march?armv7r
-MULTILIB_MATCHES      += march?armv7=march?armv7m
-MULTILIB_MATCHES      += march?armv7=march?armv7-a
-MULTILIB_MATCHES      += march?armv7=march?armv7-r
-MULTILIB_MATCHES      += march?armv7=march?armv7-m
-MULTILIB_MATCHES      += march?armv7=mcpu?cortex-a8
-MULTILIB_MATCHES      += march?armv7=mcpu?cortex-r4
-MULTILIB_MATCHES      += march?armv7=mcpu?cortex-m3
+# We do not build a Thumb multilib for Linux because the definition of
+# CLEAR_INSN_CACHE in linux-gas.h does not work in Thumb mode.
+MULTILIB_OPTIONS	=
+MULTILIB_DIRNAMES	=
 
 # Use a version of div0 which raises SIGFPE.
 LIB1ASMFUNCS := $(filter-out _dvmd_tls,$(LIB1ASMFUNCS)) _dvmd_lnx
diff -Naur gcc-cs2007q3-51.orig/gcc/config/arm/uclinux-eabi.h gcc-cs2007q3-51/gcc/config/arm/uclinux-eabi.h
--- gcc-cs2007q3-51.orig/gcc/config/arm/uclinux-eabi.h	2008-06-07 21:27:36.000000000 -0400
+++ gcc-cs2007q3-51/gcc/config/arm/uclinux-eabi.h	2008-06-07 21:28:46.000000000 -0400
@@ -64,12 +64,3 @@
 		    : "0" (_beg), "r" (_end), "r" (_flg), "r" (_scno));	\
 }
 
-#undef SYSROOT_SUFFIX_SPEC
-#define SYSROOT_SUFFIX_SPEC		\
-  "%{mthumb:"				\
-  "   %{march=armv7*:/thumb2 ;"		\
-  "	mcpu=cortex-a8:/thumb2 ;"	\
-  "	mcpu=cortex-r4:/thumb2 ;"	\
-  "	mcpu=cortex-m3:/thumb2 ;"	\
-  "	march=armv6-m:/armv6-m ;"	\
-  "	mcpu=cortex-m1:/armv6-m}}"
diff -Naur gcc-cs2007q3-51.orig/gcc/config/arm/wrs-linux.h gcc-cs2007q3-51/gcc/config/arm/wrs-linux.h
--- gcc-cs2007q3-51.orig/gcc/config/arm/wrs-linux.h	2008-06-07 21:27:36.000000000 -0400
+++ gcc-cs2007q3-51/gcc/config/arm/wrs-linux.h	2008-06-07 21:35:08.000000000 -0400
@@ -61,12 +61,3 @@
      txscale:-m armelfb_linux_eabi ; 		\
      : -m armelf_linux_eabi}"
 
-/* The various C libraries each have their own subdirectory.  */
-#undef SYSROOT_SUFFIX_SPEC
-#define SYSROOT_SUFFIX_SPEC					\
-  "%{muclibc:/uclibc}%{tiwmmxt:/tiwmmxt ;			\
-     tiwmmxt2:/tiwmmxt ;					\
-     txscale:/txscale ;						\
-     tarm920t:/tarm920t ;					\
-     tthumb2:/thumb2}%{!tthumb2:%{mfloat-abi=softfp:/softfp}}"
-
