* Patch by Daniel Engström, 18 Nov 2002:
  Fixes for x86 port (mostly strings issues)

* Patch by Ken Chou, 18 Nov 2002:
  Fix for natsemi NIC cards (DP83815)

* Patch by Pierre Aubert, 19 Nov 2002:
  fix a bug for the MII configuration, and some warnings
diff --git a/CHANGELOG b/CHANGELOG
index 5b26e95..9d11a0f 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,15 @@
 Changes since for U-Boot 0.1.0:
 ======================================================================
 
+* Patch by Daniel Engström, 18 Nov 2002:
+  Fixes for x86 port (mostly strings issues)
+
+* Patch by Ken Chou, 18 Nov 2002:
+  Fix for natsemi NIC cards (DP83815)
+
+* Patch by Pierre Aubert, 19 Nov 2002:
+  fix a bug for the MII configuration, and some warnings
+
 * Patch by Thomas Frieden, 13 Nov 2002:
   Add code for AmigaOne board
   (preliminary merge to U-Boot, still WIP)
diff --git a/Makefile b/Makefile
index ec21400..6c98c84 100644
--- a/Makefile
+++ b/Makefile
@@ -142,7 +142,9 @@
 		$(OBJDUMP) -d $< > $@
 
 u-boot:		depend subdirs $(OBJS) $(LIBS) $(LDSCRIPT)
-		$(LD) $(LDFLAGS) $(OBJS) $(LIBS) $(LIBS) -Map u-boot.map -o u-boot
+		$(LD) $(LDFLAGS) $(OBJS) \
+			--start-group $(LIBS) --end-group \
+			-Map u-boot.map -o u-boot
 
 subdirs:
 		@for dir in $(SUBDIRS) ; do $(MAKE) -C $$dir || exit 1 ; done
diff --git a/board/RPXClassic/RPXClassic.c b/board/RPXClassic/RPXClassic.c
index 4d2100b..aed9479 100644
--- a/board/RPXClassic/RPXClassic.c
+++ b/board/RPXClassic/RPXClassic.c
@@ -127,12 +127,12 @@
 			}
 		}
 		/* Scan to the end of the record		*/
-		while ((*cp != '\n') && (*cp != 0xff)) {
+		while ((*cp != '\n') && (*cp != (char)0xff)) {
 			cp++;
 		}
 		/* If the next character is a \n, 0 or ff, we are done.	*/
 		cp++;
-		if ((*cp == '\n') || (*cp == 0) || (*cp == 0xff))
+		if ((*cp == '\n') || (*cp == 0) || (*cp == (char)0xff))
 			break;
 	}
 
@@ -140,12 +140,6 @@
 	/* The MAC address is the same as normal ethernet except the 3rd byte	 */
 	/* (See the E.P. Planet Core Overview manual		*/
 	enet[3] |= 0x80;
-
-	/* Validate the fast ethernet tranceiver		*/
-	*((volatile uchar *) BCSR2) &= ~BCSR2_MIICTL;
-	*((volatile uchar *) BCSR2) &= ~BCSR2_MIIPWRDWN;
-	*((volatile uchar *) BCSR2) |= BCSR2_MIIRST;
-	*((volatile uchar *) BCSR2) |= BCSR2_MIIPWRDWN;
 #endif
 
 	printf ("MAC address = %02x:%02x:%02x:%02x:%02x:%02x\n",
@@ -158,6 +152,15 @@
 	/* Enable NVRAM */
 	*((uchar *) BCSR0) |= BCSR0_ENNVRAM;
 
+#ifdef CONFIG_FEC_ENET
+
+	/* Validate the fast ethernet tranceiver                             */
+	*((volatile uchar *) BCSR2) &= ~BCSR2_MIICTL;
+	*((volatile uchar *) BCSR2) &= ~BCSR2_MIIPWRDWN;
+	*((volatile uchar *) BCSR2) |= BCSR2_MIIRST;
+	*((volatile uchar *) BCSR2) |= BCSR2_MIIPWRDWN;
+#endif
+
 }
 
 /* ------------------------------------------------------------------------- */
@@ -254,6 +257,10 @@
 	}
 	return (maxsize);
 }
+/*-----------------------------------------------------------------------------
+ * aschex_to_byte -- 
+ *-----------------------------------------------------------------------------
+ */
 static unsigned char aschex_to_byte (unsigned char *cp)
 {
 	u_char byte, c;
diff --git a/board/trab/u-boot.lds b/board/trab/u-boot.lds
index 59834af..92a369f 100644
--- a/board/trab/u-boot.lds
+++ b/board/trab/u-boot.lds
@@ -33,7 +33,6 @@
 	.text      :
 	{
 	  cpu/arm920t/start.o	(.text)
-	  lib_arm/_udivsi3.o	(.text)
 	  lib_arm/_umodsi3.o	(.text)
 	  lib_generic/zlib.o	(.text)
 	  lib_generic/crc32.o	(.text)
diff --git a/drivers/natsemi.c b/drivers/natsemi.c
index 5a8c5b4..0bed04d 100644
--- a/drivers/natsemi.c
+++ b/drivers/natsemi.c
@@ -306,8 +306,8 @@
 			break;
 		}
 
-		pci_read_config_dword(devno, PCI_BASE_ADDRESS_0, &iobase);
-		iobase &= ~0x3;	/* 1: unused and 0:I/O Space Indicator */
+		pci_read_config_dword(devno, PCI_BASE_ADDRESS_1, &iobase);
+		iobase &= ~0xF;	/* Masked out the low bits that are addresses. */
 
 		pci_write_config_dword(devno, PCI_COMMAND,
 				       PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER);
diff --git a/include/asm-arm/string.h b/include/asm-arm/string.h
index b65a766..c3ea582 100644
--- a/include/asm-arm/string.h
+++ b/include/asm-arm/string.h
@@ -6,23 +6,23 @@
  * optimised inline asm versions are not small.
  */
 
-#define __HAVE_ARCH_STRRCHR
+#undef __HAVE_ARCH_STRRCHR
 extern char * strrchr(const char * s, int c);
 
-#define __HAVE_ARCH_STRCHR
+#undef __HAVE_ARCH_STRCHR
 extern char * strchr(const char * s, int c);
 
-#define __HAVE_ARCH_MEMCPY
+#undef __HAVE_ARCH_MEMCPY
 extern void * memcpy(void *, const void *, __kernel_size_t);
 
-#define __HAVE_ARCH_MEMMOVE
+#undef __HAVE_ARCH_MEMMOVE
 extern void * memmove(void *, const void *, __kernel_size_t);
 
-#define __HAVE_ARCH_MEMCHR
+#undef __HAVE_ARCH_MEMCHR
 extern void * memchr(const void *, int, __kernel_size_t);
 
-#define __HAVE_ARCH_MEMZERO
-#define __HAVE_ARCH_MEMSET
+#undef __HAVE_ARCH_MEMZERO
+#undef __HAVE_ARCH_MEMSET
 extern void * memset(void *, int, __kernel_size_t);
 
 #if 0
diff --git a/include/asm-i386/processor.h b/include/asm-i386/processor.h
new file mode 100644
index 0000000..c175193
--- /dev/null
+++ b/include/asm-i386/processor.h
@@ -0,0 +1,29 @@
+/*
+ * (C) Copyright 2002
+ * Daniel Engström, Omicron Ceti AB, daniel@omicron.se
+ * 
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef __ASM_PROCESSOR_H_
+#define __ASM_PROCESSOR_H_ 1
+/* Currently this header is unused in the i386 port
+ * but some generic files #include <asm/processor.h>
+ * so this file is a placeholder. */
+#endif
diff --git a/include/asm-i386/string.h b/include/asm-i386/string.h
index c378222..91a23f9 100644
--- a/include/asm-i386/string.h
+++ b/include/asm-i386/string.h
@@ -6,25 +6,25 @@
  * optimised inline asm versions are not small.
  */
 
-#define __HAVE_ARCH_STRRCHR
+#undef __HAVE_ARCH_STRRCHR
 extern char * strrchr(const char * s, int c);
 
-#define __HAVE_ARCH_STRCHR
+#undef __HAVE_ARCH_STRCHR
 extern char * strchr(const char * s, int c);
 
-#define __HAVE_ARCH_MEMCPY
+#undef __HAVE_ARCH_MEMCPY
 extern void * memcpy(void *, const void *, __kernel_size_t);
 
-#define __HAVE_ARCH_MEMMOVE
+#undef __HAVE_ARCH_MEMMOVE
 extern void * memmove(void *, const void *, __kernel_size_t);
 
-#define __HAVE_ARCH_MEMCHR
+#undef __HAVE_ARCH_MEMCHR
 extern void * memchr(const void *, int, __kernel_size_t);
 
-#define __HAVE_ARCH_MEMSET
+#undef __HAVE_ARCH_MEMSET
 extern void * memset(void *, int, __kernel_size_t);
 
-#define __HAVE_ARCH_MEMZERO
+#undef __HAVE_ARCH_MEMZERO
 extern void memzero(void *ptr, __kernel_size_t n);
 
 #endif
diff --git a/lib_generic/string.c b/lib_generic/string.c
index 1e1e2e3..f4d2457 100644
--- a/lib_generic/string.c
+++ b/lib_generic/string.c
@@ -20,30 +20,6 @@
 #include <linux/ctype.h>
 #include <malloc.h>
 
-#ifdef	CONFIG_ARM
-#undef  __HAVE_ARCH_MEMCMP
-#undef  __HAVE_ARCH_MEMCPY
-#undef  __HAVE_ARCH_MEMMOVE
-#undef  __HAVE_ARCH_MEMSET
-#undef  __HAVE_ARCH_BCOPY
-#undef  __HAVE_ARCH_STRCAT
-#undef  __HAVE_ARCH_STRCHR
-#undef  __HAVE_ARCH_STRCMP
-#undef  __HAVE_ARCH_STRCPY
-#undef  __HAVE_ARCH_STRLEN
-#undef  __HAVE_ARCH_STRNCPY
-#else
-#define __HAVE_ARCH_MEMCMP
-#define __HAVE_ARCH_MEMCPY
-#define __HAVE_ARCH_MEMMOVE
-#define __HAVE_ARCH_MEMSET
-#define __HAVE_ARCH_BCOPY
-#define __HAVE_ARCH_STRCAT
-#define __HAVE_ARCH_STRCMP
-#define __HAVE_ARCH_STRCPY
-#define __HAVE_ARCH_STRLEN
-#define __HAVE_ARCH_STRNCPY
-#endif
 
 #ifndef __HAVE_ARCH_STRNICMP
 /**
diff --git a/lib_i386/pci_type1.c b/lib_i386/pci_type1.c
index e5577e8..8d35716 100644
--- a/lib_i386/pci_type1.c
+++ b/lib_i386/pci_type1.c
@@ -14,7 +14,6 @@
 
 #ifdef CONFIG_PCI
 
-#include <asm/processor.h>
 #include <asm/io.h>
 #include <pci.h>