]> git.sur5r.net Git - u-boot/blobdiff - lib_nios/board.c
rtc: Add Xicor/Intersil X1205 RTC support
[u-boot] / lib_nios / board.c
index fb477e94e0cfc537837127fffba43fa524053d1f..0a0d2e38fdacb72e7c070ac896c703712f7f6871 100644 (file)
@@ -32,6 +32,7 @@
 #include <status_led.h>
 #endif
 
+DECLARE_GLOBAL_DATA_PTR;
 
 /*
  * All attempts to come up with a "common" initialization sequence
@@ -49,7 +50,6 @@
 
 extern void malloc_bin_reloc (void);
 typedef int (init_fnc_t) (void);
-extern unsigned _vectors[];
 
 /*
  * Begin and End of memory area for malloc(), and current "brk"
@@ -107,8 +107,6 @@ init_fnc_t *init_sequence[] = {
 /***********************************************************************/
 void board_init (void)
 {
-       DECLARE_GLOBAL_DATA_PTR;
-
        bd_t *bd;
        init_fnc_t **init_fnc_ptr;
        char *s, *e;
@@ -118,11 +116,10 @@ void board_init (void)
         * Nios treats CFG_GBL_DATA_OFFSET as an address.
         */
        gd = (gd_t *)CFG_GBL_DATA_OFFSET;
-       memset( gd, 0, CFG_GBL_DATA_SIZE );
+       /* compiler optimization barrier needed for GCC >= 3.4 */
+       __asm__ __volatile__("": : :"memory");
 
-       /* Copy exception vectors to the correct location.
-        */
-       memcpy( (void *)CFG_VECT_BASE, _vectors, 256 );
+       memset( gd, 0, CFG_GBL_DATA_SIZE );
 
        gd->bd = (bd_t *)(gd+1);        /* At end of global data */
        gd->baudrate = CONFIG_BAUDRATE;
@@ -139,13 +136,16 @@ void board_init (void)
        bd->bi_baudrate = CONFIG_BAUDRATE;
 
        for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {
+               WATCHDOG_RESET ();
                if ((*init_fnc_ptr) () != 0) {
                        hang ();
                }
        }
 
+       WATCHDOG_RESET ();
        bd->bi_flashsize = flash_init();
 
+       WATCHDOG_RESET ();
        mem_malloc_init();
        malloc_bin_reloc();
        env_relocate();
@@ -157,12 +157,14 @@ void board_init (void)
                if (s) s = (*e) ? e + 1 : e;
        }
 
+       WATCHDOG_RESET ();
        devices_init();
        jumptable_init();
        console_init_r();
        /*
         */
 
+       WATCHDOG_RESET ();
        interrupt_init ();
 
 #ifdef CONFIG_STATUS_LED