From b2184c314de0af9788ce505b413030d2114cfa4a Mon Sep 17 00:00:00 2001
From: wdenk <wdenk>
Date: Tue, 19 Nov 2002 23:01:07 +0000
Subject: [PATCH] =?UTF-8?q?*=20Patch=20by=20Daniel=20Engstr=F6m,=2018=20No?=
 =?UTF-8?q?v=202002:=20=20=20Fixes=20for=20x86=20port=20(mostly=20strings?=
 =?UTF-8?q?=20issues)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* 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
---
 CHANGELOG                     |  9 +++++++++
 Makefile                      |  4 +++-
 board/RPXClassic/RPXClassic.c | 23 +++++++++++++++--------
 board/trab/u-boot.lds         |  1 -
 drivers/natsemi.c             |  4 ++--
 include/asm-arm/string.h      | 14 +++++++-------
 include/asm-i386/processor.h  | 29 +++++++++++++++++++++++++++++
 include/asm-i386/string.h     | 14 +++++++-------
 lib_generic/string.c          | 24 ------------------------
 lib_i386/pci_type1.c          |  1 -
 10 files changed, 72 insertions(+), 51 deletions(-)
 create mode 100644 include/asm-i386/processor.h

diff --git a/CHANGELOG b/CHANGELOG
index 5b26e95abb3..9d11a0fb2ae 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 ec2140034c6..6c98c84938a 100644
--- a/Makefile
+++ b/Makefile
@@ -142,7 +142,9 @@ u-boot.dis:	u-boot
 		$(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 4d2100b4d6d..aed9479dbc3 100644
--- a/board/RPXClassic/RPXClassic.c
+++ b/board/RPXClassic/RPXClassic.c
@@ -127,12 +127,12 @@ void board_get_enetaddr (uchar * enet)
 			}
 		}
 		/* 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 @@ void board_get_enetaddr (uchar * enet)
 	/* 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 @@ void rpxclassic_init (void)
 	/* 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 @@ static long int dram_size (long int mamr_value, long int *base, long int maxsize
 	}
 	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 59834afb83b..92a369f01a6 100644
--- a/board/trab/u-boot.lds
+++ b/board/trab/u-boot.lds
@@ -33,7 +33,6 @@ SECTIONS
 	.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 5a8c5b4ecc1..0bed04dbbdf 100644
--- a/drivers/natsemi.c
+++ b/drivers/natsemi.c
@@ -306,8 +306,8 @@ natsemi_initialize(bd_t * bis)
 			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 b65a766e1a0..c3ea582cab2 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 00000000000..c175193315f
--- /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 c3782224868..91a23f951ca 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 1e1e2e33fc3..f4d245725cf 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 e5577e82060..8d35716eed0 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>
 
-- 
GitLab