summaryrefslogtreecommitdiff
path: root/lib_i386/board.c
diff options
context:
space:
mode:
authorwdenk <wdenk>2003-05-31 18:35:21 +0000
committerwdenk <wdenk>2003-05-31 18:35:21 +0000
commit7a8e9bed17d7924a9c5c4699b1f6a3a0359524ed (patch)
tree5c273df9c5efa7b1b6a4ca88904e48039ef591e8 /lib_i386/board.c
parent3b57fe0a70b903f4db66c558bb9828bc58acf06b (diff)
downloadu-boot-imx-7a8e9bed17d7924a9c5c4699b1f6a3a0359524ed.zip
u-boot-imx-7a8e9bed17d7924a9c5c4699b1f6a3a0359524ed.tar.gz
u-boot-imx-7a8e9bed17d7924a9c5c4699b1f6a3a0359524ed.tar.bz2
* 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
Diffstat (limited to 'lib_i386/board.c')
-rw-r--r--lib_i386/board.c34
1 files changed, 16 insertions, 18 deletions
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 @@ static int mem_malloc_init(void)
{
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 @@ static int init_baudrate (void)
{
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 @@ init_fnc_t *init_sequence[] = {
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 @@ void start_i386boot (void)
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 @@ void start_i386boot (void)
/* 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 @@ void start_i386boot (void)
#endif
/* enable exceptions */
- enable_interrupts ();
+ enable_interrupts();
show_boot_progress(0x28);
/* Must happen after interrupts are initialized since
@@ -369,7 +366,7 @@ void start_i386boot (void)
status_led_set (STATUS_LED_BOOT, STATUS_LED_BLINKING);
#endif
- udelay (20);
+ udelay(20);
set_timer (0);
@@ -399,7 +396,7 @@ void start_i386boot (void)
#if (CONFIG_COMMANDS & CFG_CMD_DOC)
WATCHDOG_RESET();
- puts ("DOC: ");
+ puts("DOC: ");
doc_init();
#endif
@@ -428,12 +425,13 @@ void start_i386boot (void)
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 */