From patchwork Thu Mar 1 07:09:05 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Chou X-Patchwork-Id: 143929 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id E0E17B6F62 for ; Thu, 1 Mar 2012 18:08:09 +1100 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id EFEF528082; Thu, 1 Mar 2012 08:08:05 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id nO2UD-T05YnA; Thu, 1 Mar 2012 08:08:05 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 8929B2807E; Thu, 1 Mar 2012 08:08:02 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id D8C6A2807E for ; Thu, 1 Mar 2012 08:08:00 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id TECobRYDv+bj for ; Thu, 1 Mar 2012 08:07:59 +0100 (CET) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from www.wytron.com.tw (unknown [211.75.82.101]) by theia.denx.de (Postfix) with ESMTP id 5D2312807C for ; Thu, 1 Mar 2012 08:07:57 +0100 (CET) Received: from darkstar.wytron.com.tw (c5 [192.168.1.250]) by www.wytron.com.tw (Postfix) with ESMTP id C7CAB2CC06B; Thu, 1 Mar 2012 15:07:50 +0800 (CST) From: Thomas Chou To: u-boot@lists.denx.de Date: Thu, 1 Mar 2012 15:09:05 +0800 Message-Id: <1330585745-19431-1-git-send-email-thomas@wytron.com.tw> X-Mailer: git-send-email 1.7.7.6 In-Reply-To: References: Cc: Alex Hornung , nios2-dev@sopc.et.ntust.edu.tw Subject: [U-Boot] [PATCH] nios2: move gd and bd into BSS X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.11 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: u-boot-bounces@lists.denx.de Errors-To: u-boot-bounces@lists.denx.de As suggested by Graeme Russ, move gd and bd data structrures to BSS instead of calculating the locations around the stack and heap. CC: Graeme Russ CC: Mike Frysinger CC: Alex Hornung Signed-off-by: Thomas Chou --- For u-boot. arch/nios2/lib/board.c | 13 ++++++------- include/configs/nios2-generic.h | 8 ++------ 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/arch/nios2/lib/board.c b/arch/nios2/lib/board.c index 65de26e..19e688a 100644 --- a/arch/nios2/lib/board.c +++ b/arch/nios2/lib/board.c @@ -83,21 +83,20 @@ init_fnc_t *init_sequence[] = { /***********************************************************************/ +gd_t gd_data; +bd_t bd_data; + void board_init (void) { bd_t *bd; init_fnc_t **init_fnc_ptr; - /* 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; diff --git a/include/configs/nios2-generic.h b/include/configs/nios2-generic.h index 17017a5..dccb66c 100644 --- a/include/configs/nios2-generic.h +++ b/include/configs/nios2-generic.h @@ -119,8 +119,7 @@ * 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). + * -The stack is placed below the heap (&grows down). */ #define CONFIG_MONITOR_IS_IN_RAM #define CONFIG_SYS_MONITOR_LEN 0x40000 /* Reserve 256k */ @@ -130,10 +129,7 @@ #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