diff -ur GPL-4/src/Makefile GPL-4-new/src/Makefile
--- GPL-4/src/Makefile	2003-11-10 15:21:28.000000000 -0500
+++ GPL-4-new/src/Makefile	2004-08-28 19:38:41.000000000 -0400
@@ -14,7 +14,8 @@
 
 SRCBASE := $(shell pwd)
 RELEASEDIR := $(shell (cd $(SRCBASE)/.. && pwd -P))
-PATH := $(RELEASEDIR)/tools:/opt/brcm/hndtools-mipsel-linux/bin:/opt/brcm/hndtools-mipsel-uclibc/bin:$(PATH)
+#PATH := $(RELEASEDIR)/tools:/opt/brcm/hndtools-mipsel-linux/bin:/opt/brcm/hndtools-mipsel-uclibc/bin:$(PATH)
+PATH := $(RELEASEDIR)/tools:/home/darkness/tmp/toolchain/gcc-3.3.x/toolchain_mipsel_nofpu/bin:$(PATH)
 
 install: all
 	install -d $(RELEASEDIR)/image/$(CUSTOMER)
diff -ur GPL-4/src/cfe/build/broadcom/bcm947xx/Makefile GPL-4-new/src/cfe/build/broadcom/bcm947xx/Makefile
--- GPL-4/src/cfe/build/broadcom/bcm947xx/Makefile	2003-10-30 11:57:23.000000000 -0500
+++ GPL-4-new/src/cfe/build/broadcom/bcm947xx/Makefile	2004-08-28 23:16:28.000000000 -0400
@@ -52,7 +52,7 @@
 CFLAGS += -G 0 -mno-abicalls -fno-pic
 
 # Discard unused sections if supported
-CFLAGS += -ffunction-sections $(call check_gcc, -fvtable-gc, )
+CFLAGS += -ffunction-sections
 LDFLAGS += -static --gc-sections
 
 else
diff -ur GPL-4/src/cfe/cfe/arch/mips/common/src/disasm.c GPL-4-new/src/cfe/cfe/arch/mips/common/src/disasm.c
--- GPL-4/src/cfe/cfe/arch/mips/common/src/disasm.c	2003-06-19 17:54:04.000000000 -0400
+++ GPL-4-new/src/cfe/cfe/arch/mips/common/src/disasm.c	2004-08-28 23:30:24.000000000 -0400
@@ -1788,7 +1788,7 @@
 	case DC_J:
 		snprintf(buf, buf_size, "%-8s 0x%" PF_64 "x",
 			 instname, 
-			 (pc & UINT64_T(0xfffffffff0000000)) | ((inst & 0x3ffffff)<<2));
+			 (pc & UINT64_T(0xfffffffff0000000ULL)) | ((inst & 0x3ffffff)<<2));
 		break;
 	case DC_RD_RS:
 		snprintf(buf, buf_size, "%-8s %s,%s",
diff -ur GPL-4/src/cfe/cfe/arch/mips/cpu/bcmcore/src/bcmcore_arena.c GPL-4-new/src/cfe/cfe/arch/mips/cpu/bcmcore/src/bcmcore_arena.c
--- GPL-4/src/cfe/cfe/arch/mips/cpu/bcmcore/src/bcmcore_arena.c	2003-06-19 17:54:04.000000000 -0400
+++ GPL-4-new/src/cfe/cfe/arch/mips/cpu/bcmcore/src/bcmcore_arena.c	2004-08-28 23:31:02.000000000 -0400
@@ -108,7 +108,7 @@
 {
     int64_t memleft;
 
-    arena_init(&cfe_arena,0x0,0x100000000);	/* 2^32 physical bytes */
+    arena_init(&cfe_arena,0x0,0x100000000ULL);	/* 2^32 physical bytes */
 
     /*
      * Mark the ranges from the SB1250's memory map
diff -ur GPL-4/src/cfe/cfe/include/cfe_bootblock.h GPL-4-new/src/cfe/cfe/include/cfe_bootblock.h
--- GPL-4/src/cfe/cfe/include/cfe_bootblock.h	2003-06-19 17:54:04.000000000 -0400
+++ GPL-4-new/src/cfe/cfe/include/cfe_bootblock.h	2004-08-29 00:01:13.000000000 -0400
@@ -100,15 +100,15 @@
  * Fields within the boot block
  */
 #define _U64(x) ((uint64_t) x)
-#define BOOT_MAGIC_NUMBER	_U64(0x43465631424f4f54)
-#define BOOT_HDR_CHECKSUM_MASK	_U64(0x00000000FFFFFFFF)
-#define BOOT_HDR_VER_MASK       _U64(0x000000FF00000000)
+#define BOOT_MAGIC_NUMBER	_U64(0x43465631424f4f54ULL)
+#define BOOT_HDR_CHECKSUM_MASK	_U64(0x00000000FFFFFFFFULL)
+#define BOOT_HDR_VER_MASK       _U64(0x000000FF00000000ULL)
 #define BOOT_HDR_VER_SHIFT	32
-#define BOOT_HDR_FLAGS_MASK	_U64(0xFF00000000000000)
-#define BOOT_SECSIZE_MASK	_U64(0x00000000FFFFFFFF)
-#define BOOT_DATA_CHECKSUM_MASK _U64(0xFFFFFFFF00000000)
+#define BOOT_HDR_FLAGS_MASK	_U64(0xFF00000000000000ULL)
+#define BOOT_SECSIZE_MASK	_U64(0x00000000FFFFFFFFULL)
+#define BOOT_DATA_CHECKSUM_MASK _U64(0xFFFFFFFF00000000ULL)
 #define BOOT_DATA_CHECKSUM_SHIFT 32
-#define BOOT_ARCHINFO_MASK	_U64(0x00000000FFFFFFFF)
+#define BOOT_ARCHINFO_MASK	_U64(0x00000000FFFFFFFFULL)
 
 #define BOOT_HDR_VERSION	1
 
diff -ur GPL-4/src/cfe/cfe/lib/lib_qsort.c GPL-4-new/src/cfe/cfe/lib/lib_qsort.c
--- GPL-4/src/cfe/cfe/lib/lib_qsort.c	2003-06-19 17:54:04.000000000 -0400
+++ GPL-4-new/src/cfe/cfe/lib/lib_qsort.c	2004-08-28 23:57:30.000000000 -0400
@@ -13,14 +13,18 @@
      ******************/
 
     for (i = sizeof(int); i <= size; i += sizeof(int)) {
-        int t = *((int *)a);
-        *(((int *)a)++) = *((int *)b);
-        *(((int *)b)++) = t;
+	int* a_int = (int*)a;
+	int* b_int = (int*)b;
+        int t = *a_int;
+	*(a_int++) = *b_int;
+	*(b_int++) = t;
 	}
     for (i = i - sizeof(int) + 1; i <= size; i++) {
-        char t = *((char *)a);
-        *(((char *)a)++) = *((char *)b);
-        *(((char *)b)++) = t;
+	char* a_char = (char*)a;
+	char* b_char = (char*)b;
+        char t = *a_char;
+        *(a_char++) = *b_char;
+        *(b_char++) = t;
 	}
 }
 
diff -ur GPL-4/src/cfe/cfe/ui/ui_examcmds.c GPL-4-new/src/cfe/cfe/ui/ui_examcmds.c
--- GPL-4/src/cfe/cfe/ui/ui_examcmds.c	2003-06-19 17:54:04.000000000 -0400
+++ GPL-4-new/src/cfe/cfe/ui/ui_examcmds.c	2004-08-29 00:11:53.000000000 -0400
@@ -550,11 +550,11 @@
 	    }
 	MEMTEST(ptr,len,(idx*8));
 	MEMTEST(ptr,len,	0);
-	MEMTEST(ptr,len,0xFFFFFFFFFFFFFFFF);
-	MEMTEST(ptr,len,0x5555555555555555); 
-	MEMTEST(ptr,len,0xAAAAAAAAAAAAAAAA); 
-	MEMTEST(ptr,len,0xFF00FF00FF00FF00);
-	MEMTEST(ptr,len,0x00FF00FF00FF00FF);
+	MEMTEST(ptr,len,0xFFFFFFFFFFFFFFFFULL);
+	MEMTEST(ptr,len,0x5555555555555555ULL); 
+	MEMTEST(ptr,len,0xAAAAAAAAAAAAAAAAULL); 
+	MEMTEST(ptr,len,0xFF00FF00FF00FF00ULL);
+	MEMTEST(ptr,len,0x00FF00FF00FF00FFULL);
 	if (!loopmode) break;
 	pass++;
 	}
diff -ur GPL-4/src/include/bcmnvram.h GPL-4-new/src/include/bcmnvram.h
--- GPL-4/src/include/bcmnvram.h	2003-10-30 13:24:40.000000000 -0500
+++ GPL-4-new/src/include/bcmnvram.h	2004-08-28 23:18:42.000000000 -0400
@@ -18,7 +18,7 @@
 #ifndef _LANGUAGE_ASSEMBLY
 
 //Gerald20030113, remarked due to bool confilict. #include <typedefs.h>
-#define INLINE inline            //Gerald20030113, added
+//#define INLINE inline            //Gerald20030113, added
 
 struct nvram_header {
 	unsigned long magic;
diff -ur GPL-4/src/linux/linux/arch/mips/Makefile GPL-4-new/src/linux/linux/arch/mips/Makefile
--- GPL-4/src/linux/linux/arch/mips/Makefile	2003-06-19 17:54:08.000000000 -0400
+++ GPL-4-new/src/linux/linux/arch/mips/Makefile	2004-08-28 23:00:17.000000000 -0400
@@ -75,7 +75,8 @@
 GCCFLAGS	+= -mcpu=r4600 -mips2 -Wa,--trap
 endif
 ifdef CONFIG_CPU_MIPS32
-GCCFLAGS	+= -mcpu=r4600 -mips2 -Wa,--trap
+#GCCFLAGS	+= -mcpu=r4600 -mips2 -Wa,--trap
+GCCFLAGS	+= -mips2 -Wa,--trap
 endif
 ifdef CONFIG_CPU_MIPS64
 GCCFLAGS	+= -mcpu=r4600 -mips2 -Wa,--trap
diff -ur GPL-4/src/pmon/GNUmakefile GPL-4-new/src/pmon/GNUmakefile
--- GPL-4/src/pmon/GNUmakefile	2003-10-30 11:57:23.000000000 -0500
+++ GPL-4-new/src/pmon/GNUmakefile	2004-08-28 23:12:58.000000000 -0400
@@ -14,7 +14,7 @@
 
 # Options
 CROSS_COMPILE := mipsel-linux-
-EXTRA_CFLAGS := -mcpu=r4600 -mips2 -Ulinux -fno-builtin
+EXTRA_CFLAGS := -mips2 -Ulinux -fno-builtin
 ENDIAN := lg
 
 DEBUG := false
diff -ur GPL-4/src/router/Makefile GPL-4-new/src/router/Makefile
--- GPL-4/src/router/Makefile	2003-11-10 15:21:29.000000000 -0500
+++ GPL-4-new/src/router/Makefile	2004-08-28 19:39:00.000000000 -0400
@@ -43,7 +43,7 @@
 endif
 
 ifeq ($(PLATFORM),mipsel-uclibc)
-export CROSS_COMPILE := mipsel-uclibc-
+export CROSS_COMPILE := mipsel-linux-uclibc-
 export CONFIGURE := ./configure mipsel-linux --build=$(BUILD)
 export TOOLCHAIN := $(shell cd $(dir $(shell which $(CROSS_COMPILE)gcc))/.. && pwd -P)
 endif
diff -ur GPL-4/src/router/busybox/Config.h GPL-4-new/src/router/busybox/Config.h
--- GPL-4/src/router/busybox/Config.h	2003-11-10 15:21:29.000000000 -0500
+++ GPL-4-new/src/router/busybox/Config.h	2003-10-30 13:24:40.000000000 -0500
@@ -117,8 +117,8 @@
 //#define BB_TEE
 //#define BB_TEST
 //#define BB_TELNET
-//#define BB_TFTP
-//#define BB_TOUCH
+#define BB_TFTP
+#define BB_TOUCH
 //#define BB_TR
 //#define BB_TRACEROUTE
 //#define BB_TRUE_FALSE
diff -ur GPL-4/src/router/ppp/pppoecd/pppoe.c GPL-4-new/src/router/ppp/pppoecd/pppoe.c
--- GPL-4/src/router/ppp/pppoecd/pppoe.c	2003-12-09 18:25:15.000000000 -0500
+++ GPL-4-new/src/router/ppp/pppoecd/pppoe.c	2004-08-28 19:41:30.000000000 -0400
@@ -133,8 +133,7 @@
 
     if (pppoe_srv_name !=NULL) {
 	if (strlen (pppoe_srv_name) > 255) {
-	    poe_error (ses," Service name too long
-	                (maximum allowed 256 chars)");
+	    poe_error (ses," Service name too long (maximum allowed 256 chars)");
 	    poe_die(-1);
 	}
 	ses->filt->stag = make_filter_tag(PTT_SRV_NAME,
diff -ur GPL-4/src/router/vlan/vconfig.c GPL-4-new/src/router/vlan/vconfig.c
--- GPL-4/src/router/vlan/vconfig.c	2003-10-30 11:58:29.000000000 -0500
+++ GPL-4-new/src/router/vlan/vconfig.c	2004-08-28 19:58:36.000000000 -0400
@@ -37,30 +37,30 @@
 
 
 static char* usage = 
-      "
-Usage: add             [interface-name] [vlan_id]
-       rem             [vlan-name]
-       set_flag        [interface-name] [flag-num]       [0 | 1]
-       set_egress_map  [vlan-name]      [skb_priority]   [vlan_qos]
-       set_ingress_map [vlan-name]      [skb_priority]   [vlan_qos]
-       set_name_type   [name-type]
-
-* The [interface-name] is the name of the ethernet card that hosts
-  the VLAN you are talking about.
-* The vlan_id is the identifier (0-4095) of the VLAN you are operating on.
-* skb_priority is the priority in the socket buffer (sk_buff).
-* vlan_qos is the 3 bit priority in the VLAN header
-* name-type:  VLAN_PLUS_VID (vlan0005), VLAN_PLUS_VID_NO_PAD (vlan5),
-              DEV_PLUS_VID (eth0.0005), DEV_PLUS_VID_NO_PAD (eth0.5)
-* bind-type:  PER_DEVICE  # Allows vlan 5 on eth0 and eth1 to be unique.
-              PER_KERNEL  # Forces vlan 5 to be unique across all devices.
-* FLAGS:  1 REORDER_HDR  When this is set, the VLAN device will move the
-            ethernet header around to make it look exactly like a real
-            ethernet device.  This may help programs such as DHCPd which
-            read the raw ethernet packet and make assumptions about the
-            location of bytes.  If you don't need it, don't turn it on, because
-            there will be at least a small performance degradation.  Default
-            is OFF.
+      "\n\
+Usage: add             [interface-name] [vlan_id]\n\
+       rem             [vlan-name]\n\
+       set_flag        [interface-name] [flag-num]       [0 | 1]\n\
+       set_egress_map  [vlan-name]      [skb_priority]   [vlan_qos]\n\
+       set_ingress_map [vlan-name]      [skb_priority]   [vlan_qos]\n\
+       set_name_type   [name-type]\n\
+\n\
+* The [interface-name] is the name of the ethernet card that hosts\n\
+  the VLAN you are talking about.\n\
+* The vlan_id is the identifier (0-4095) of the VLAN you are operating on.\n\
+* skb_priority is the priority in the socket buffer (sk_buff).\n\
+* vlan_qos is the 3 bit priority in the VLAN header\n\
+* name-type:  VLAN_PLUS_VID (vlan0005), VLAN_PLUS_VID_NO_PAD (vlan5),\n\
+              DEV_PLUS_VID (eth0.0005), DEV_PLUS_VID_NO_PAD (eth0.5)\n\
+* bind-type:  PER_DEVICE  # Allows vlan 5 on eth0 and eth1 to be unique.\n\
+              PER_KERNEL  # Forces vlan 5 to be unique across all devices.\n\
+* FLAGS:  1 REORDER_HDR  When this is set, the VLAN device will move the\n\
+            ethernet header around to make it look exactly like a real\n\
+            ethernet device.  This may help programs such as DHCPd which\n\
+            read the raw ethernet packet and make assumptions about the\n\
+            location of bytes.  If you don't need it, don't turn it on, because\n\
+            there will be at least a small performance degradation.  Default\n\
+            is OFF.\n\
 ";
 
 void show_usage() {
diff -ur GPL-4/src/shared/bcmutils.c GPL-4-new/src/shared/bcmutils.c
--- GPL-4/src/shared/bcmutils.c	2003-10-30 11:57:24.000000000 -0500
+++ GPL-4-new/src/shared/bcmutils.c	2004-08-28 23:48:35.000000000 -0400
@@ -632,7 +632,8 @@
     /* handle bulk of data as 32-bit words */
     pend = pdata + (nbytes & 0xfffffffc);
     while (pdata < pend) {
-	*tptr = *((ulong *)pdata)++;
+	ulong *pdata_ulong = (ulong*)pdata;
+	*tptr = *pdata_ulong++;
         CRC_INNER_LOOP(32, crc, tmp[0]);
         CRC_INNER_LOOP(32, crc, tmp[1]);
         CRC_INNER_LOOP(32, crc, tmp[2]);
diff -ur GPL-4/src/shared/sbutils.c GPL-4-new/src/shared/sbutils.c
--- GPL-4/src/shared/sbutils.c	2003-11-10 15:21:29.000000000 -0500
+++ GPL-4-new/src/shared/sbutils.c	2004-08-28 23:35:40.000000000 -0400
@@ -135,7 +135,7 @@
 		INTR_OFF(si, intr_val);
 		tmp = 1;
 		OSL_PCMCIA_WRITE_ATTR(si->osh, MEM_SEG, &tmp, 1);
-		(uint32)sbr &= ~(1 << 11);	/* mask out bit 11*/
+		sbr = (uint32*) (((uint32)sbr) & ~(1 << 11));	/* mask out bit 11*/
 	}
 
 	val = R_REG(sbr);
@@ -169,7 +169,7 @@
 		INTR_OFF(si, intr_val);
 		tmp = 1;
 		OSL_PCMCIA_WRITE_ATTR(si->osh, MEM_SEG, &tmp, 1);
-		(uint32)sbr &= ~(1 << 11);	/* mask out bit 11 */
+		sbr = (uint32*) (((uint32)sbr) & ~(1 << 11));	/* mask out bit 11 */
 	}
 
 	if ((si->bus == PCMCIA_BUS) || (si->bus == PCI_BUS)) {

