* Patch by Marc Singer, 29 May 2003:
  Fixed rarp boot method for IA32 and other little-endian CPUs.

* Patch by Marc Singer, 28 May 2003:
  Added port I/O commands.

* Patch by Matthew McClintock, 28 May 2003
  - cpu/mpc824x/start.S: fix relocation code when booting from RAM
  - minor patches for utx8245

* Patch by Daniel Engström, 28 May 2003:
  x86 update

* Patch by Dave Ellis, 9 May 2003 + 27 May 2003:
  add nand flash support to SXNI855T configuration
  fix/extend nand flash support:
  - fix 'nand erase' command so does not erase bad blocks
  - fix 'nand write' command so does not write to bad blocks
  - fix nand_probe() so handles no flash detected properly
  - add doc/README.nand
  - add .jffs2 and .oob options to nand read/write
  - add 'nand bad' command to list bad blocks
  - add 'clean' option to 'nand erase' to write JFFS2 clean markers
  - make NAND read/write faster

* Patch by Rune Torgersen, 23 May 2003:
  Update for MPC8266ADS board
diff --git a/lib_i386/board.c b/lib_i386/board.c
index 193860a..85d7d7f 100644
--- a/lib_i386/board.c
+++ b/lib_i386/board.c
@@ -37,6 +37,7 @@
 #include <syscall.h>
 #include <net.h>
 #include <ide.h>
+#include <asm/u-boot-i386.h>
 
 extern long _i386boot_start;	    
 extern long _i386boot_end;	    
@@ -82,21 +83,14 @@
 {
 	DECLARE_GLOBAL_DATA_PTR;
         
-#if 1	
 	/* start malloc area right after the stack */
 	mem_malloc_start = i386boot_bss_start + 
 		i386boot_bss_size + CFG_STACK_SIZE;
 	mem_malloc_start = (mem_malloc_start+3)&~3;
-#else
-	mem_malloc_start = 0x400000;
-#endif	
-#if 1
+	
 	/* Use all available RAM for malloc() */
 	mem_malloc_end = gd->ram_size;
-#else	
-	/* Use only  CONFIG_MALLOC_SIZE bytes of RAM for malloc() */
-	mem_malloc_end = mem_malloc_start + CONFIG_MALLOC_SIZE;
-#endif	
+	
 	mem_malloc_brk = mem_malloc_start;
 
 	return 0;
@@ -149,10 +143,10 @@
 {
 	DECLARE_GLOBAL_DATA_PTR;
 
-	uchar tmp[64];	/* long enough for environment variables */
-	int i = getenv_r ("baudrate", tmp, sizeof (tmp));
+	char tmp[64];	/* long enough for environment variables */
+	int i = getenv_r("baudrate", tmp, 64);
 
-	gd->baudrate = (i > 0)
+	gd->baudrate = (i != 0)
 			? (int) simple_strtoul (tmp, NULL, 10)
 			: CONFIG_BAUDRATE;
 
@@ -237,6 +231,7 @@
 	mem_malloc_init,        /* dependant on dram_init */
 	interrupt_init,		/* set up exceptions */
 	timer_init,	
+	serial_init,
 	env_init,		/* initialize environment */
 	init_baudrate,		/* initialze baudrate settings */
 	serial_init,		/* serial communications setup */
@@ -267,6 +262,7 @@
 	memset (gd->bd, 0, sizeof (bd_t));
 	show_boot_progress(0x22);
 
+	gd->baudrate =  CONFIG_BAUDRATE;
 	
 	for (init_fnc_ptr = init_sequence, i=0; *init_fnc_ptr; ++init_fnc_ptr, i++) {
 		show_boot_progress(0xa130|i);
@@ -323,7 +319,8 @@
 
 	/* allocate syscalls table (console_init_r will fill it in */
 	syscall_tbl = (void **) malloc (NR_SYSCALLS * sizeof (void *));
-
+	memset(syscall_tbl, 0, NR_SYSCALLS * sizeof (void *));
+	
 	/* Initialize the console (after the relocation and devices init) */
 	console_init_r();
 	syscalls_init();
@@ -355,7 +352,7 @@
 #endif
 
 	/* enable exceptions */
-	enable_interrupts ();
+	enable_interrupts();
 	show_boot_progress(0x28);
 
 	/* Must happen after interrupts are initialized since
@@ -369,7 +366,7 @@
 	status_led_set (STATUS_LED_BOOT, STATUS_LED_BLINKING);
 #endif
 
-	udelay (20);
+	udelay(20);
 
 	set_timer (0);
 
@@ -399,7 +396,7 @@
 
 #if (CONFIG_COMMANDS & CFG_CMD_DOC)
 	WATCHDOG_RESET();
-	puts ("DOC:   ");
+	puts("DOC:   ");
 	doc_init();
 #endif
 
@@ -428,12 +425,13 @@
 		board_poweroff();
 	}
 #endif
-
+	
+	
 	show_boot_progress(0x29);
 	
 	/* main_loop() can return to retry autoboot, if so just run it again. */
 	for (;;) {
-		main_loop ();
+		main_loop();
 	}
 
 	/* NOTREACHED - no way out of command loop except booting */