nios2: move gd and bd into BSS
authorThomas Chou <thomas@wytron.com.tw>
Mon, 23 Apr 2012 02:55:02 +0000 (10:55 +0800)
committerThomas Chou <thomas@wytron.com.tw>
Mon, 16 Jul 2012 01:51:12 +0000 (09:51 +0800)
As suggested by Graeme Russ, move gd and bd data structrures
to BSS instead of calculating the locations around the stack
and heap.

Signed-off-by: Thomas Chou <thomas@wytron.com.tw>
Acked-by: Mike Frysinger <vapier@gentoo.org>
arch/nios2/lib/board.c
include/configs/nios2-generic.h

index ca8a3e52462ba338a2154c8adda0e4d73c036a52..1e495d442dcf3f496c766837afd8ef489a6442dc 100644 (file)
@@ -87,17 +87,15 @@ void board_init (void)
 {
        bd_t *bd;
        init_fnc_t **init_fnc_ptr;
+       static gd_t gd_data;
+       static bd_t bd_data;
 
-       /* Pointer is writable since we allocated a register for it.
-        * Nios treats CONFIG_SYS_GBL_DATA_OFFSET as an address.
-        */
-       gd = (gd_t *)CONFIG_SYS_GBL_DATA_OFFSET;
+       /* Pointer is writable since we allocated a register for it. */
+       gd = &gd_data;
        /* compiler optimization barrier needed for GCC >= 3.4 */
        __asm__ __volatile__("": : :"memory");
 
-       memset( gd, 0, GENERATED_GBL_DATA_SIZE );
-
-       gd->bd = (bd_t *)(gd+1);        /* At end of global data */
+       gd->bd = &bd_data;
        gd->baudrate = CONFIG_BAUDRATE;
        gd->cpu_clk = CONFIG_SYS_CLK_FREQ;
 
index a383fa465cff16480299565e7ae21157778a13be..69ff3efb5045c665d8fafec4ca4bdc84e94adcb0 100644 (file)
 
 /*
  * MEMORY ORGANIZATION
- *     -Monitor at top of sdram.
- *     -The heap is placed below the monitor
- *     -Global data is placed below the heap.
- *     -The stack is placed below global data (&grows down).
+ * -Monitor at top of sdram.
+ * -The heap is placed below the monitor
+ * -The stack is placed below the heap (&grows down).
  */
 #define CONFIG_MONITOR_IS_IN_RAM
 #define CONFIG_SYS_MONITOR_LEN         0x40000 /* Reserve 256k */
 #define CONFIG_SYS_MALLOC_LEN          (CONFIG_ENV_SIZE + 0x20000)
 #define CONFIG_SYS_MALLOC_BASE         (CONFIG_SYS_MONITOR_BASE - \
                                         CONFIG_SYS_MALLOC_LEN)
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_MALLOC_BASE - \
-                                        GENERATED_GBL_DATA_SIZE - \
-                                        GENERATED_BD_INFO_SIZE)
-#define CONFIG_SYS_INIT_SP             CONFIG_SYS_GBL_DATA_OFFSET
+#define CONFIG_SYS_INIT_SP             CONFIG_SYS_MALLOC_BASE
 
 /*
  * MISC