diff --git a/ChangeLog b/ChangeLog
index f891c48fa0fb8a9c991b297480809331d81fb84f..777ed8b12878264cd5dd4a95030b06cc0f40a2ad 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -606,4 +606,7 @@
 	* Fix errors in some function prototypes in dirent.h
 	* Add eZ80F91 EMAC driver
 	* Fix recvfrom() compilation error -- only noted under ZDS
+	* Updated all ARM Make.def files to work with gcc 2.4.2 (However, there are
+	  still some build issues associated with that toolchain in use of arm-elf-objcopy
+	  -- see the TODO.txt list for details)
 
diff --git a/Documentation/NuttX.html b/Documentation/NuttX.html
index bb3284f6037f2f6d3a865c8adcef8a07078b7820..88143d061ed2e049d524bf6871fe70f1e3746040 100644
--- a/Documentation/NuttX.html
+++ b/Documentation/NuttX.html
@@ -8,7 +8,7 @@
   <tr align="center" bgcolor="#e4e4e4">
     <td>
       <h1><big><font color="#3c34ec"><i>NuttX RTOS</i></font></big></h1>
-      <p>Last Updated: December 12, 2008</p>
+      <p>Last Updated: January 6, 2009</p>
     </td>
   </tr>
 </table>
@@ -1294,12 +1294,18 @@ nuttx-0.4.1 2008-xx-xx Gregory Nutt &lt;spudmonkey@racsa.co.cr&gt;
 	* Fix errors in some function prototypes in dirent.h
 	* Add eZ80F91 EMAC driver
 	* Fix recvfrom() compilation error -- only noted under ZDS
+	* Updated all ARM Make.def files to work with gcc 2.4.2 (However, there are
+	  still some build issues associated with that toolchain in use of arm-elf-objcopy
+	  -- see the TODO.txt list for details)
 
 pascal-0.1.3 2008-xx-xx Gregory Nutt &lt;spudmonkey@racsa.co.cr&gt;
 
 buildroot-0.1.3 2008-xx-xx &lt;spudmonkey@racsa.co.cr&gt;
 
 	* Add support for H8/300 toolchain
+	* Add support for GCC 4.2.4 and binutils 2.19
+	* New ARM configuration using  GCC 4.2.4 and binutils 2.19
+	  (Note: this doesn't work with NuttX yet... to nuttx TODO.txt list).
 </pre></ul>
 
 <table width ="100%">
diff --git a/TODO b/TODO
index 4d68cde7db017a384d955e685d7a3ef3541f5464..27e56a33b3a87007c5f6acf0ba287e757db57bdd 100644
--- a/TODO
+++ b/TODO
@@ -14,7 +14,7 @@ NuttX TODO List (Last updated November 20, 2008)
   (2)  Graphics subystem (graphics/)
   (1)  Pascal add-on (pcode/)
   (2)  Documentation (Documentation/)
-  (5)  Build system
+  (5)  Build system / Toolchains
   (2)  NuttShell (NSH) (examples/nsh)
   (1)  Other Applications & Tests (examples/)
   (1)  Linux/Cywgin simulation (arch/sim)
@@ -367,6 +367,13 @@ o Build system
   Status:      Open
   Priority:    Medium-low
 
+  Descripton   I am having trouble using the newer gcc 4.2.4 + binutils 2.19
+               toolchain for ARM.  The problem is in arch/arm/src/Makefile:
+               In the call to objcopy to relocate the .data section, arm-elf-objcopy
+               dies with a 'Floating point exception'  No clue to the cause yet.
+  Status:      Open
+  Priority:    Medium-Low -- workaroung, stick with the 3.4.5 toolchain
+
 o NuttShell (NSH) (examples/nsh)
   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/configs/c5471evm/Make.defs b/configs/c5471evm/Make.defs
index f9060371329b58cb9cae2b3fae11790f7115b122..b172585c3c9db84ee70be5172e4738f924b5150f 100644
--- a/configs/c5471evm/Make.defs
+++ b/configs/c5471evm/Make.defs
@@ -35,6 +35,18 @@
 
 include ${TOPDIR}/.config
 
+CROSSDEV		= arm-elf-
+CC			= $(CROSSDEV)gcc
+CPP			= $(CROSSDEV)gcc -E
+LD			= $(CROSSDEV)ld
+AR			= $(CROSSDEV)ar rcs
+NM			= $(CROSSDEV)nm
+OBJCOPY			= $(CROSSDEV)objcopy
+OBJDUMP			= $(CROSSDEV)objdump
+
+ARCHCCVERSION		= ${shell $(CC) -v 2>&1 | sed -n '/^gcc version/p' | sed -e 's/^gcc version \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q'}
+ARCHCCMAJOR		= ${shell echo $(ARCHCCVERSION) | cut -d'.' -f1}
+
 ifeq ("${CONFIG_DEBUG}","y")
   ARCHOPTIMIZATION	= -g
 else
@@ -42,22 +54,17 @@ else
 			  -fomit-frame-pointer
 endif
 
-ARCHCPUFLAGS		= -mapcs-32 -mcpu=arm7tdmi -msoft-float -fno-builtin
+ifeq ($(ARCHCCMAJOR),4)
+  ARCHCPUFLAGS		= -mcpu=arm7tdmi -msoft-float -fno-builtin
+else
+  ARCHCPUFLAGS		= -mapcs-32 -mcpu=arm7tdmi -msoft-float -fno-builtin
+endif
 ARCHPICFLAGS		= -fpic
 ARCHWARNINGS		= -Wall -Wstrict-prototypes -Wshadow
 ARCHDEFINES		=
 ARCHINCLUDES		= -I. -isystem $(TOPDIR)/include
 ARCHSCRIPT		= -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/ld.script
 
-CROSSDEV		= arm-elf-
-CC			= $(CROSSDEV)gcc
-CPP			= $(CROSSDEV)gcc -E
-LD			= $(CROSSDEV)ld
-AR			= $(CROSSDEV)ar rcs
-NM			= $(CROSSDEV)nm
-OBJCOPY			= $(CROSSDEV)objcopy
-OBJDUMP			= $(CROSSDEV)objdump
-
 CFLAGS			= $(ARCHWARNINGS) $(ARCHOPTIMIZATION) \
 			  $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) -pipe
 CPPFLAGS		= $(ARCHINCLUDES) $(ARCHDEFINES)
diff --git a/configs/mcu123-lpc214x/nsh/Make.defs b/configs/mcu123-lpc214x/nsh/Make.defs
index bd68f351f2795afc793acc51cd1d2f56f7e15ce4..648d97c73ac09f5f2b42179792120ec19f97f4ec 100644
--- a/configs/mcu123-lpc214x/nsh/Make.defs
+++ b/configs/mcu123-lpc214x/nsh/Make.defs
@@ -35,6 +35,18 @@
 
 include ${TOPDIR}/.config
 
+CROSSDEV		= arm-elf-
+CC			= $(CROSSDEV)gcc
+CPP			= $(CROSSDEV)gcc -E
+LD			= $(CROSSDEV)ld
+AR			= $(CROSSDEV)ar rcs
+NM			= $(CROSSDEV)nm
+OBJCOPY			= $(CROSSDEV)objcopy
+OBJDUMP			= $(CROSSDEV)objdump
+
+ARCHCCVERSION		= ${shell $(CC) -v 2>&1 | sed -n '/^gcc version/p' | sed -e 's/^gcc version \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q'}
+ARCHCCMAJOR		= ${shell echo $(ARCHCCVERSION) | cut -d'.' -f1}
+
 ifeq ("${CONFIG_DEBUG}","y")
   ARCHOPTIMIZATION	= -g
 else
@@ -42,22 +54,17 @@ else
 			  -fomit-frame-pointer
 endif
 
-ARCHCPUFLAGS		= -mapcs-32 -mcpu=arm7tdmi -msoft-float -fno-builtin
+ifeq ($(ARCHCCMAJOR),4)
+  ARCHCPUFLAGS		= -mcpu=arm7tdmi -msoft-float -fno-builtin
+else
+  ARCHCPUFLAGS		= -mapcs-32 -mcpu=arm7tdmi -msoft-float -fno-builtin
+endif
 ARCHPICFLAGS		= -fpic
 ARCHWARNINGS		= -Wall -Wstrict-prototypes -Wshadow
 ARCHDEFINES		=
 ARCHINCLUDES		= -I. -isystem $(TOPDIR)/include
 ARCHSCRIPT		= -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/nsh/ld.script
 
-CROSSDEV		= arm-elf-
-CC			= $(CROSSDEV)gcc
-CPP			= $(CROSSDEV)gcc -E
-LD			= $(CROSSDEV)ld
-AR			= $(CROSSDEV)ar rcs
-NM			= $(CROSSDEV)nm
-OBJCOPY			= $(CROSSDEV)objcopy
-OBJDUMP			= $(CROSSDEV)objdump
-
 CFLAGS			= $(ARCHWARNINGS) $(ARCHOPTIMIZATION) \
 			  $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) -pipe
 CPPFLAGS		= $(ARCHINCLUDES) $(ARCHDEFINES)
diff --git a/configs/mcu123-lpc214x/ostest/Make.defs b/configs/mcu123-lpc214x/ostest/Make.defs
index 568d92a0d39093d2c46d6e2293f0a32914266010..1ed441e540d7937c8b0998abbf5a1c92e071f970 100644
--- a/configs/mcu123-lpc214x/ostest/Make.defs
+++ b/configs/mcu123-lpc214x/ostest/Make.defs
@@ -35,6 +35,18 @@
 
 include ${TOPDIR}/.config
 
+CROSSDEV		= arm-elf-
+CC			= $(CROSSDEV)gcc
+CPP			= $(CROSSDEV)gcc -E
+LD			= $(CROSSDEV)ld
+AR			= $(CROSSDEV)ar rcs
+NM			= $(CROSSDEV)nm
+OBJCOPY			= $(CROSSDEV)objcopy
+OBJDUMP			= $(CROSSDEV)objdump
+
+ARCHCCVERSION		= ${shell $(CC) -v 2>&1 | sed -n '/^gcc version/p' | sed -e 's/^gcc version \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q'}
+ARCHCCMAJOR		= ${shell echo $(ARCHCCVERSION) | cut -d'.' -f1}
+
 ifeq ("${CONFIG_DEBUG}","y")
   ARCHOPTIMIZATION	= -g
 else
@@ -42,22 +54,17 @@ else
 			  -fomit-frame-pointer
 endif
 
-ARCHCPUFLAGS		= -mapcs-32 -mcpu=arm7tdmi -msoft-float -fno-builtin
+ifeq ($(ARCHCCMAJOR),4)
+  ARCHCPUFLAGS		= -mcpu=arm7tdmi -msoft-float -fno-builtin
+else
+  ARCHCPUFLAGS		= -mapcs-32 -mcpu=arm7tdmi -msoft-float -fno-builtin
+endif
 ARCHPICFLAGS		= -fpic
 ARCHWARNINGS		= -Wall -Wstrict-prototypes -Wshadow
 ARCHDEFINES		=
 ARCHINCLUDES		= -I. -isystem $(TOPDIR)/include
 ARCHSCRIPT		= -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/ostest/ld.script
 
-CROSSDEV		= arm-elf-
-CC			= $(CROSSDEV)gcc
-CPP			= $(CROSSDEV)gcc -E
-LD			= $(CROSSDEV)ld
-AR			= $(CROSSDEV)ar rcs
-NM			= $(CROSSDEV)nm
-OBJCOPY			= $(CROSSDEV)objcopy
-OBJDUMP			= $(CROSSDEV)objdump
-
 CFLAGS			= $(ARCHWARNINGS) $(ARCHOPTIMIZATION) \
 			  $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) -pipe
 CPPFLAGS		= $(ARCHINCLUDES) $(ARCHDEFINES)
diff --git a/configs/mcu123-lpc214x/usbserial/Make.defs b/configs/mcu123-lpc214x/usbserial/Make.defs
index bc50d039815d3a4f57f1c22ffa990b3481d9b796..68d286666ddf6c45c1098b0e365e80dfcb8e6e24 100644
--- a/configs/mcu123-lpc214x/usbserial/Make.defs
+++ b/configs/mcu123-lpc214x/usbserial/Make.defs
@@ -35,6 +35,18 @@
 
 include ${TOPDIR}/.config
 
+CROSSDEV		= arm-elf-
+CC			= $(CROSSDEV)gcc
+CPP			= $(CROSSDEV)gcc -E
+LD			= $(CROSSDEV)ld
+AR			= $(CROSSDEV)ar rcs
+NM			= $(CROSSDEV)nm
+OBJCOPY			= $(CROSSDEV)objcopy
+OBJDUMP			= $(CROSSDEV)objdump
+
+ARCHCCVERSION		= ${shell $(CC) -v 2>&1 | sed -n '/^gcc version/p' | sed -e 's/^gcc version \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q'}
+ARCHCCMAJOR		= ${shell echo $(ARCHCCVERSION) | cut -d'.' -f1}
+
 ifeq ("${CONFIG_DEBUG}","y")
   ARCHOPTIMIZATION	= -g
 else
@@ -42,22 +54,17 @@ else
 			  -fomit-frame-pointer
 endif
 
-ARCHCPUFLAGS		= -mapcs-32 -mcpu=arm7tdmi -msoft-float -fno-builtin
+ifeq ($(ARCHCCMAJOR),4)
+  ARCHCPUFLAGS		= -mcpu=arm7tdmi -msoft-float -fno-builtin
+else
+  ARCHCPUFLAGS		= -mapcs-32 -mcpu=arm7tdmi -msoft-float -fno-builtin
+endif
 ARCHPICFLAGS		= -fpic
 ARCHWARNINGS		= -Wall -Wstrict-prototypes -Wshadow
 ARCHDEFINES		=
 ARCHINCLUDES		= -I. -isystem $(TOPDIR)/include
 ARCHSCRIPT		= -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/usbserial/ld.script
 
-CROSSDEV		= arm-elf-
-CC			= $(CROSSDEV)gcc
-CPP			= $(CROSSDEV)gcc -E
-LD			= $(CROSSDEV)ld
-AR			= $(CROSSDEV)ar rcs
-NM			= $(CROSSDEV)nm
-OBJCOPY			= $(CROSSDEV)objcopy
-OBJDUMP			= $(CROSSDEV)objdump
-
 CFLAGS			= $(ARCHWARNINGS) $(ARCHOPTIMIZATION) \
 			  $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) -pipe
 CPPFLAGS		= $(ARCHINCLUDES) $(ARCHDEFINES)
diff --git a/configs/mcu123-lpc214x/usbstorage/Make.defs b/configs/mcu123-lpc214x/usbstorage/Make.defs
index b3e608710a7dada97a8a9fc5e266f7931611611c..36a38c57d8f4ea9c9cec8cb64ab14b3a110e7d4c 100644
--- a/configs/mcu123-lpc214x/usbstorage/Make.defs
+++ b/configs/mcu123-lpc214x/usbstorage/Make.defs
@@ -35,6 +35,18 @@
 
 include ${TOPDIR}/.config
 
+CROSSDEV		= arm-elf-
+CC			= $(CROSSDEV)gcc
+CPP			= $(CROSSDEV)gcc -E
+LD			= $(CROSSDEV)ld
+AR			= $(CROSSDEV)ar rcs
+NM			= $(CROSSDEV)nm
+OBJCOPY			= $(CROSSDEV)objcopy
+OBJDUMP			= $(CROSSDEV)objdump
+
+ARCHCCVERSION		= ${shell $(CC) -v 2>&1 | sed -n '/^gcc version/p' | sed -e 's/^gcc version \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q'}
+ARCHCCMAJOR		= ${shell echo $(ARCHCCVERSION) | cut -d'.' -f1}
+
 ifeq ("${CONFIG_DEBUG}","y")
   ARCHOPTIMIZATION	= -g
 else
@@ -42,22 +54,17 @@ else
 			  -fomit-frame-pointer
 endif
 
-ARCHCPUFLAGS		= -mapcs-32 -mcpu=arm7tdmi -msoft-float -fno-builtin
+ifeq ($(ARCHCCMAJOR),4)
+  ARCHCPUFLAGS		= -mcpu=arm7tdmi -msoft-float -fno-builtin
+else
+  ARCHCPUFLAGS		= -mapcs-32 -mcpu=arm7tdmi -msoft-float -fno-builtin
+endif
 ARCHPICFLAGS		= -fpic
 ARCHWARNINGS		= -Wall -Wstrict-prototypes -Wshadow
 ARCHDEFINES		=
 ARCHINCLUDES		= -I. -isystem $(TOPDIR)/include
 ARCHSCRIPT		= -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/usbstorage/ld.script
 
-CROSSDEV		= arm-elf-
-CC			= $(CROSSDEV)gcc
-CPP			= $(CROSSDEV)gcc -E
-LD			= $(CROSSDEV)ld
-AR			= $(CROSSDEV)ar rcs
-NM			= $(CROSSDEV)nm
-OBJCOPY			= $(CROSSDEV)objcopy
-OBJDUMP			= $(CROSSDEV)objdump
-
 CFLAGS			= $(ARCHWARNINGS) $(ARCHOPTIMIZATION) \
 			  $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) -pipe
 CPPFLAGS		= $(ARCHINCLUDES) $(ARCHDEFINES)
diff --git a/configs/ntosd-dm320/nettest/Make.defs b/configs/ntosd-dm320/nettest/Make.defs
index e356d8775c26f3a63ffc27145c49067325eb7544..004a57f290ac35c037b25b23babd30558efe8083 100644
--- a/configs/ntosd-dm320/nettest/Make.defs
+++ b/configs/ntosd-dm320/nettest/Make.defs
@@ -35,6 +35,18 @@
 
 include ${TOPDIR}/.config
 
+CROSSDEV		= arm-elf-
+CC			= $(CROSSDEV)gcc
+CPP			= $(CROSSDEV)gcc -E
+LD			= $(CROSSDEV)ld
+AR			= $(CROSSDEV)ar rcs
+NM			= $(CROSSDEV)nm
+OBJCOPY			= $(CROSSDEV)objcopy
+OBJDUMP			= $(CROSSDEV)objdump
+
+ARCHCCVERSION		= ${shell $(CC) -v 2>&1 | sed -n '/^gcc version/p' | sed -e 's/^gcc version \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q'}
+ARCHCCMAJOR		= ${shell echo $(ARCHCCVERSION) | cut -d'.' -f1}
+
 ifeq ("${CONFIG_DEBUG}","y")
   ARCHOPTIMIZATION	= -g
 else
@@ -42,22 +54,17 @@ else
 			  -fomit-frame-pointer
 endif
 
-ARCHCPUFLAGS		= -mapcs-32 -mtune=arm9tdmi -march=armv5te -msoft-float -fno-builtin
+ifeq ($(ARCHCCMAJOR),4)
+  ARCHCPUFLAGS		= -mtune=arm9tdmi -march=armv5te -msoft-float -fno-builtin
+else
+  ARCHCPUFLAGS		= -mapcs-32 -mtune=arm9tdmi -march=armv5te -msoft-float -fno-builtin
+endif
 ARCHPICFLAGS		= -fpic
 ARCHWARNINGS		= -Wall -Wstrict-prototypes -Wshadow
 ARCHDEFINES		=
 ARCHINCLUDES		= -I. -isystem $(TOPDIR)/include
 ARCHSCRIPT		= -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/nettest/ld.script
 
-CROSSDEV		= arm-elf-
-CC			= $(CROSSDEV)gcc
-CPP			= $(CROSSDEV)gcc -E
-LD			= $(CROSSDEV)ld
-AR			= $(CROSSDEV)ar rcs
-NM			= $(CROSSDEV)nm
-OBJCOPY			= $(CROSSDEV)objcopy
-OBJDUMP			= $(CROSSDEV)objdump
-
 CFLAGS			= $(ARCHWARNINGS) $(ARCHOPTIMIZATION) \
 			  $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) -pipe
 CPPFLAGS		= $(ARCHINCLUDES) $(ARCHDEFINES)
diff --git a/configs/ntosd-dm320/nsh/Make.defs b/configs/ntosd-dm320/nsh/Make.defs
index 4f6e1c53e250d484ae7400802a6e0b298e817175..cc0717f9d551d25d65c63bc553ade2fcde08a04e 100644
--- a/configs/ntosd-dm320/nsh/Make.defs
+++ b/configs/ntosd-dm320/nsh/Make.defs
@@ -35,6 +35,18 @@
 
 include ${TOPDIR}/.config
 
+CROSSDEV		= arm-elf-
+CC			= $(CROSSDEV)gcc
+CPP			= $(CROSSDEV)gcc -E
+LD			= $(CROSSDEV)ld
+AR			= $(CROSSDEV)ar rcs
+NM			= $(CROSSDEV)nm
+OBJCOPY			= $(CROSSDEV)objcopy
+OBJDUMP			= $(CROSSDEV)objdump
+
+ARCHCCVERSION		= ${shell $(CC) -v 2>&1 | sed -n '/^gcc version/p' | sed -e 's/^gcc version \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q'}
+ARCHCCMAJOR		= ${shell echo $(ARCHCCVERSION) | cut -d'.' -f1}
+
 ifeq ("${CONFIG_DEBUG}","y")
   ARCHOPTIMIZATION	= -g
 else
@@ -42,22 +54,17 @@ else
 			  -fomit-frame-pointer
 endif
 
-ARCHCPUFLAGS		= -mapcs-32 -mtune=arm9tdmi -march=armv5te -msoft-float -fno-builtin
+ifeq ($(ARCHCCMAJOR),4)
+  ARCHCPUFLAGS		= -mtune=arm9tdmi -march=armv5te -msoft-float -fno-builtin
+else
+  ARCHCPUFLAGS		= -mapcs-32 -mtune=arm9tdmi -march=armv5te -msoft-float -fno-builtin
+endif
 ARCHPICFLAGS		= -fpic
 ARCHWARNINGS		= -Wall -Wstrict-prototypes -Wshadow
 ARCHDEFINES		=
 ARCHINCLUDES		= -I. -isystem $(TOPDIR)/include
 ARCHSCRIPT		= -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/nsh/ld.script
 
-CROSSDEV		= arm-elf-
-CC			= $(CROSSDEV)gcc
-CPP			= $(CROSSDEV)gcc -E
-LD			= $(CROSSDEV)ld
-AR			= $(CROSSDEV)ar rcs
-NM			= $(CROSSDEV)nm
-OBJCOPY			= $(CROSSDEV)objcopy
-OBJDUMP			= $(CROSSDEV)objdump
-
 CFLAGS			= $(ARCHWARNINGS) $(ARCHOPTIMIZATION) \
 			  $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) -pipe
 CPPFLAGS		= $(ARCHINCLUDES) $(ARCHDEFINES)
diff --git a/configs/ntosd-dm320/ostest/Make.defs b/configs/ntosd-dm320/ostest/Make.defs
index 80c939af9badfa9a3225f3dc451a35ea1c9dfd9c..d7c978dd55e9b6fd279fdc8a4478a71586f72548 100644
--- a/configs/ntosd-dm320/ostest/Make.defs
+++ b/configs/ntosd-dm320/ostest/Make.defs
@@ -35,6 +35,18 @@
 
 include ${TOPDIR}/.config
 
+CROSSDEV		= arm-elf-
+CC			= $(CROSSDEV)gcc
+CPP			= $(CROSSDEV)gcc -E
+LD			= $(CROSSDEV)ld
+AR			= $(CROSSDEV)ar rcs
+NM			= $(CROSSDEV)nm
+OBJCOPY			= $(CROSSDEV)objcopy
+OBJDUMP			= $(CROSSDEV)objdump
+
+ARCHCCVERSION		= ${shell $(CC) -v 2>&1 | sed -n '/^gcc version/p' | sed -e 's/^gcc version \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q'}
+ARCHCCMAJOR		= ${shell echo $(ARCHCCVERSION) | cut -d'.' -f1}
+
 ifeq ("${CONFIG_DEBUG}","y")
   ARCHOPTIMIZATION	= -g
 else
@@ -42,22 +54,17 @@ else
 			  -fomit-frame-pointer
 endif
 
-ARCHCPUFLAGS		= -mapcs-32 -mtune=arm9tdmi -march=armv5te -msoft-float -fno-builtin
+ifeq ($(ARCHCCMAJOR),4)
+  ARCHCPUFLAGS		= -mtune=arm9tdmi -march=armv5te -msoft-float -fno-builtin
+else
+  ARCHCPUFLAGS		= -mapcs-32 -mtune=arm9tdmi -march=armv5te -msoft-float -fno-builtin
+endif
 ARCHPICFLAGS		= -fpic
 ARCHWARNINGS		= -Wall -Wstrict-prototypes -Wshadow
 ARCHDEFINES		=
 ARCHINCLUDES		= -I. -isystem $(TOPDIR)/include
 ARCHSCRIPT		= -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/ostest/ld.script
 
-CROSSDEV		= arm-elf-
-CC			= $(CROSSDEV)gcc
-CPP			= $(CROSSDEV)gcc -E
-LD			= $(CROSSDEV)ld
-AR			= $(CROSSDEV)ar rcs
-NM			= $(CROSSDEV)nm
-OBJCOPY			= $(CROSSDEV)objcopy
-OBJDUMP			= $(CROSSDEV)objdump
-
 CFLAGS			= $(ARCHWARNINGS) $(ARCHOPTIMIZATION) \
 			  $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) -pipe
 CPPFLAGS		= $(ARCHINCLUDES) $(ARCHDEFINES)
diff --git a/configs/ntosd-dm320/poll/Make.defs b/configs/ntosd-dm320/poll/Make.defs
index 9715d108423bad010b3d0c2337f107efb63db856..37b6b7fc906c3e9cb384e4e6fd81937120e0f5fe 100644
--- a/configs/ntosd-dm320/poll/Make.defs
+++ b/configs/ntosd-dm320/poll/Make.defs
@@ -35,6 +35,18 @@
 
 include ${TOPDIR}/.config
 
+CROSSDEV		= arm-elf-
+CC			= $(CROSSDEV)gcc
+CPP			= $(CROSSDEV)gcc -E
+LD			= $(CROSSDEV)ld
+AR			= $(CROSSDEV)ar rcs
+NM			= $(CROSSDEV)nm
+OBJCOPY			= $(CROSSDEV)objcopy
+OBJDUMP			= $(CROSSDEV)objdump
+
+ARCHCCVERSION		= ${shell $(CC) -v 2>&1 | sed -n '/^gcc version/p' | sed -e 's/^gcc version \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q'}
+ARCHCCMAJOR		= ${shell echo $(ARCHCCVERSION) | cut -d'.' -f1}
+
 ifeq ("${CONFIG_DEBUG}","y")
   ARCHOPTIMIZATION	= -g
 else
@@ -42,22 +54,17 @@ else
 			  -fomit-frame-pointer
 endif
 
-ARCHCPUFLAGS		= -mapcs-32 -mtune=arm9tdmi -march=armv5te -msoft-float -fno-builtin
+ifeq ($(ARCHCCMAJOR),4)
+  ARCHCPUFLAGS		= -mtune=arm9tdmi -march=armv5te -msoft-float -fno-builtin
+else
+  ARCHCPUFLAGS		= -mapcs-32 -mtune=arm9tdmi -march=armv5te -msoft-float -fno-builtin
+endif
 ARCHPICFLAGS		= -fpic
 ARCHWARNINGS		= -Wall -Wstrict-prototypes -Wshadow
 ARCHDEFINES		=
 ARCHINCLUDES		= -I. -isystem $(TOPDIR)/include
 ARCHSCRIPT		= -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/poll/ld.script
 
-CROSSDEV		= arm-elf-
-CC			= $(CROSSDEV)gcc
-CPP			= $(CROSSDEV)gcc -E
-LD			= $(CROSSDEV)ld
-AR			= $(CROSSDEV)ar rcs
-NM			= $(CROSSDEV)nm
-OBJCOPY			= $(CROSSDEV)objcopy
-OBJDUMP			= $(CROSSDEV)objdump
-
 CFLAGS			= $(ARCHWARNINGS) $(ARCHOPTIMIZATION) \
 			  $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) -pipe
 CPPFLAGS		= $(ARCHINCLUDES) $(ARCHDEFINES)
diff --git a/configs/ntosd-dm320/udp/Make.defs b/configs/ntosd-dm320/udp/Make.defs
index f410ec8f36179e43a3ad93ab0046616b2c16cd19..e1c159f0562495f9acdb79ea3f1b6c33635e14fc 100644
--- a/configs/ntosd-dm320/udp/Make.defs
+++ b/configs/ntosd-dm320/udp/Make.defs
@@ -35,6 +35,18 @@
 
 include ${TOPDIR}/.config
 
+CROSSDEV		= arm-elf-
+CC			= $(CROSSDEV)gcc
+CPP			= $(CROSSDEV)gcc -E
+LD			= $(CROSSDEV)ld
+AR			= $(CROSSDEV)ar rcs
+NM			= $(CROSSDEV)nm
+OBJCOPY			= $(CROSSDEV)objcopy
+OBJDUMP			= $(CROSSDEV)objdump
+
+ARCHCCVERSION		= ${shell $(CC) -v 2>&1 | sed -n '/^gcc version/p' | sed -e 's/^gcc version \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q'}
+ARCHCCMAJOR		= ${shell echo $(ARCHCCVERSION) | cut -d'.' -f1}
+
 ifeq ("${CONFIG_DEBUG}","y")
   ARCHOPTIMIZATION	= -g
 else
@@ -42,22 +54,17 @@ else
 			  -fomit-frame-pointer
 endif
 
-ARCHCPUFLAGS		= -mapcs-32 -mtune=arm9tdmi -march=armv5te -msoft-float -fno-builtin
+ifeq ($(ARCHCCMAJOR),4)
+  ARCHCPUFLAGS		= -mtune=arm9tdmi -march=armv5te -msoft-float -fno-builtin
+else
+  ARCHCPUFLAGS		= -mapcs-32 -mtune=arm9tdmi -march=armv5te -msoft-float -fno-builtin
+endif
 ARCHPICFLAGS		= -fpic
 ARCHWARNINGS		= -Wall -Wstrict-prototypes -Wshadow
 ARCHDEFINES		=
 ARCHINCLUDES		= -I. -isystem $(TOPDIR)/include
 ARCHSCRIPT		= -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/udp/ld.script
 
-CROSSDEV		= arm-elf-
-CC			= $(CROSSDEV)gcc
-CPP			= $(CROSSDEV)gcc -E
-LD			= $(CROSSDEV)ld
-AR			= $(CROSSDEV)ar rcs
-NM			= $(CROSSDEV)nm
-OBJCOPY			= $(CROSSDEV)objcopy
-OBJDUMP			= $(CROSSDEV)objdump
-
 CFLAGS			= $(ARCHWARNINGS) $(ARCHOPTIMIZATION) \
 			  $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) -pipe
 CPPFLAGS		= $(ARCHINCLUDES) $(ARCHDEFINES)
diff --git a/configs/ntosd-dm320/uip/Make.defs b/configs/ntosd-dm320/uip/Make.defs
index 91ad89bb3e83d55f99f42f48d825271a88aab517..ca21cc396a261600ec369cc2b44b985f5a4d51cc 100644
--- a/configs/ntosd-dm320/uip/Make.defs
+++ b/configs/ntosd-dm320/uip/Make.defs
@@ -35,6 +35,18 @@
 
 include ${TOPDIR}/.config
 
+CROSSDEV		= arm-elf-
+CC			= $(CROSSDEV)gcc
+CPP			= $(CROSSDEV)gcc -E
+LD			= $(CROSSDEV)ld
+AR			= $(CROSSDEV)ar rcs
+NM			= $(CROSSDEV)nm
+OBJCOPY			= $(CROSSDEV)objcopy
+OBJDUMP			= $(CROSSDEV)objdump
+
+ARCHCCVERSION		= ${shell $(CC) -v 2>&1 | sed -n '/^gcc version/p' | sed -e 's/^gcc version \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q'}
+ARCHCCMAJOR		= ${shell echo $(ARCHCCVERSION) | cut -d'.' -f1}
+
 ifeq ("${CONFIG_DEBUG}","y")
   ARCHOPTIMIZATION	= -g
 else
@@ -42,22 +54,17 @@ else
 			  -fomit-frame-pointer
 endif
 
-ARCHCPUFLAGS		= -mapcs-32 -mtune=arm9tdmi -march=armv5te -msoft-float -fno-builtin
+ifeq ($(ARCHCCMAJOR),4)
+  ARCHCPUFLAGS		= -mtune=arm9tdmi -march=armv5te -msoft-float -fno-builtin
+else
+  ARCHCPUFLAGS		= -mapcs-32 -mtune=arm9tdmi -march=armv5te -msoft-float -fno-builtin
+endif
 ARCHPICFLAGS		= -fpic
 ARCHWARNINGS		= -Wall -Wstrict-prototypes -Wshadow
 ARCHDEFINES		=
 ARCHINCLUDES		= -I. -isystem $(TOPDIR)/include
 ARCHSCRIPT		= -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/uip/ld.script
 
-CROSSDEV		= arm-elf-
-CC			= $(CROSSDEV)gcc
-CPP			= $(CROSSDEV)gcc -E
-LD			= $(CROSSDEV)ld
-AR			= $(CROSSDEV)ar rcs
-NM			= $(CROSSDEV)nm
-OBJCOPY			= $(CROSSDEV)objcopy
-OBJDUMP			= $(CROSSDEV)objdump
-
 CFLAGS			= $(ARCHWARNINGS) $(ARCHOPTIMIZATION) \
 			  $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) -pipe
 CPPFLAGS		= $(ARCHINCLUDES) $(ARCHDEFINES)
diff --git a/configs/olimex-strp711/ostest/Make.defs b/configs/olimex-strp711/ostest/Make.defs
index 7f31319be14590f46e2b87ce4ca74b5bca60d060..1dcd07d1c2431c5c38678f32f6be3ace8feb44fa 100644
--- a/configs/olimex-strp711/ostest/Make.defs
+++ b/configs/olimex-strp711/ostest/Make.defs
@@ -35,6 +35,18 @@
 
 include ${TOPDIR}/.config
 
+CROSSDEV		= arm-elf-
+CC			= $(CROSSDEV)gcc
+CPP			= $(CROSSDEV)gcc -E
+LD			= $(CROSSDEV)ld
+AR			= $(CROSSDEV)ar rcs
+NM			= $(CROSSDEV)nm
+OBJCOPY			= $(CROSSDEV)objcopy
+OBJDUMP			= $(CROSSDEV)objdump
+
+ARCHCCVERSION		= ${shell $(CC) -v 2>&1 | sed -n '/^gcc version/p' | sed -e 's/^gcc version \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q'}
+ARCHCCMAJOR		= ${shell echo $(ARCHCCVERSION) | cut -d'.' -f1}
+
 ifeq ("${CONFIG_DEBUG}","y")
   ARCHOPTIMIZATION	= -g
 else
@@ -42,22 +54,17 @@ else
 			  -fomit-frame-pointer
 endif
 
-ARCHCPUFLAGS		= -mapcs-32 -mcpu=arm7tdmi -msoft-float -fno-builtin
+ifeq ($(ARCHCCMAJOR),4)
+  ARCHCPUFLAGS		= -mcpu=arm7tdmi -msoft-float -fno-builtin
+else
+  ARCHCPUFLAGS		= -mapcs-32 -mcpu=arm7tdmi -msoft-float -fno-builtin
+endif
 ARCHPICFLAGS		= -fpic
 ARCHWARNINGS		= -Wall -Wstrict-prototypes -Wshadow
 ARCHDEFINES		=
 ARCHINCLUDES		= -I. -isystem $(TOPDIR)/include
 ARCHSCRIPT		= -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/ostest/ld.script
 
-CROSSDEV		= arm-elf-
-CC			= $(CROSSDEV)gcc
-CPP			= $(CROSSDEV)gcc -E
-LD			= $(CROSSDEV)ld
-AR			= $(CROSSDEV)ar rcs
-NM			= $(CROSSDEV)nm
-OBJCOPY			= $(CROSSDEV)objcopy
-OBJDUMP			= $(CROSSDEV)objdump
-
 CFLAGS			= $(ARCHWARNINGS) $(ARCHOPTIMIZATION) \
 			  $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) -pipe
 CPPFLAGS		= $(ARCHINCLUDES) $(ARCHDEFINES)