X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=lib_nios2%2Fboard.c;h=c6b36f4a2ef1e35903c535abfab261d743627d1c;hb=67c3d9fb36bd0e66bd5cbf2719564e01f6459433;hp=cd23037771407993b92229166ed83efc66504702;hpb=7a635e004ec12bd2a0bae9f90fbb5769b524a42e;p=u-boot diff --git a/lib_nios2/board.c b/lib_nios2/board.c index cd23037771..c6b36f4a2e 100644 --- a/lib_nios2/board.c +++ b/lib_nios2/board.c @@ -25,12 +25,16 @@ */ #include -#include +#include #include +#include #include #ifdef CONFIG_STATUS_LED #include #endif +#if defined(CONFIG_SYS_NIOS_EPCSBASE) +#include +#endif DECLARE_GLOBAL_DATA_PTR; @@ -51,38 +55,6 @@ DECLARE_GLOBAL_DATA_PTR; extern void malloc_bin_reloc (void); typedef int (init_fnc_t) (void); -/* - * Begin and End of memory area for malloc(), and current "brk" - */ -static ulong mem_malloc_start = 0; -static ulong mem_malloc_end = 0; -static ulong mem_malloc_brk = 0; - -/* - * The Malloc area is immediately below the monitor copy in RAM - */ -static void mem_malloc_init (void) -{ - mem_malloc_start = CFG_MALLOC_BASE; - mem_malloc_end = mem_malloc_start + CFG_MALLOC_LEN; - mem_malloc_brk = mem_malloc_start; - memset ((void *) mem_malloc_start, - 0, - mem_malloc_end - mem_malloc_start); -} - -void *sbrk (ptrdiff_t increment) -{ - ulong old = mem_malloc_brk; - ulong new = old + increment; - - if ((new < mem_malloc_start) || (new > mem_malloc_end)) { - return (NULL); - } - mem_malloc_brk = new; - return ((void *) old); -} - /************************************************************************ * Initialization sequence * @@ -93,6 +65,9 @@ init_fnc_t *init_sequence[] = { #if defined(CONFIG_BOARD_EARLY_INIT_F) board_early_init_f, /* Call board-specific init code early.*/ #endif +#if defined(CONFIG_SYS_NIOS_EPCSBASE) + epcs_reset, +#endif env_init, serial_init, @@ -113,25 +88,25 @@ void board_init (void) int i; /* Pointer is writable since we allocated a register for it. - * Nios treats CFG_GBL_DATA_OFFSET as an address. + * Nios treats CONFIG_SYS_GBL_DATA_OFFSET as an address. */ - gd = (gd_t *)CFG_GBL_DATA_OFFSET; + gd = (gd_t *)CONFIG_SYS_GBL_DATA_OFFSET; /* compiler optimization barrier needed for GCC >= 3.4 */ __asm__ __volatile__("": : :"memory"); - memset( gd, 0, CFG_GBL_DATA_SIZE ); + memset( gd, 0, CONFIG_SYS_GBL_DATA_SIZE ); gd->bd = (bd_t *)(gd+1); /* At end of global data */ gd->baudrate = CONFIG_BAUDRATE; gd->cpu_clk = CONFIG_SYS_CLK_FREQ; bd = gd->bd; - bd->bi_memstart = CFG_SDRAM_BASE; - bd->bi_memsize = CFG_SDRAM_SIZE; - bd->bi_flashstart = CFG_FLASH_BASE; -#if defined(CFG_SRAM_BASE) && defined(CFG_SRAM_SIZE) - bd->bi_sramstart= CFG_SRAM_BASE; - bd->bi_sramsize = CFG_SRAM_SIZE; + bd->bi_memstart = CONFIG_SYS_SDRAM_BASE; + bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE; + bd->bi_flashstart = CONFIG_SYS_FLASH_BASE; +#if defined(CONFIG_SYS_SRAM_BASE) && defined(CONFIG_SYS_SRAM_SIZE) + bd->bi_sramstart= CONFIG_SYS_SRAM_BASE; + bd->bi_sramsize = CONFIG_SYS_SRAM_SIZE; #endif bd->bi_baudrate = CONFIG_BAUDRATE; @@ -142,29 +117,32 @@ void board_init (void) } } + WATCHDOG_RESET (); + + /* The Malloc area is immediately below the monitor copy in RAM */ + mem_malloc_init(CONFIG_SYS_MALLOC_BASE, CONFIG_SYS_MALLOC_LEN); + malloc_bin_reloc(); + WATCHDOG_RESET (); bd->bi_flashsize = flash_init(); WATCHDOG_RESET (); - mem_malloc_init(); - malloc_bin_reloc(); env_relocate(); bd->bi_ip_addr = getenv_IPaddr ("ipaddr"); - s = getenv ("ethaddr"); - for (i = 0; i < 6; ++i) { - bd->bi_enetaddr[i] = s ? simple_strtoul (s, &e, 16) : 0; - if (s) s = (*e) ? e + 1 : e; - } WATCHDOG_RESET (); - devices_init(); + stdio_init(); jumptable_init(); console_init_r(); WATCHDOG_RESET (); interrupt_init (); +#if defined(CONFIG_BOARD_LATE_INIT) + board_late_init (); +#endif + /* main_loop */ for (;;) { WATCHDOG_RESET ();