Patchwork [U-Boot] Move DECLARE_GLOBAL_DATA_PTR to file scope

login
register
mail settings
Submitter John Rigby
Date Dec. 21, 2010, 1:27 a.m.
Message ID <1292894871-1436-1-git-send-email-john.rigby@linaro.org>
Download mbox | patch
Permalink /patch/76250/
State Accepted
Headers show

Comments

John Rigby - Dec. 21, 2010, 1:27 a.m.
It can be optimised out by the compiler otherwise resulting
in obscure errors like a board not booting.

This has been documented in README since 2006 when these were
first fixed up for GCC 4.x.

Signed-off-by: John Rigby <john.rigby@linaro.org>
---
 arch/arm/cpu/armv7/mx5/speed.c      |    4 ++--
 arch/blackfin/cpu/serial.c          |    3 ++-
 arch/m68k/cpu/mcf547x_8x/speed.c    |    4 ++--
 arch/sh/lib/board.c                 |    4 ++--
 board/espt/espt.c                   |    4 ++--
 board/isee/igep0020/igep0020.c      |    4 ++--
 board/isee/igep0030/igep0030.c      |    4 ++--
 board/linkstation/linkstation.c     |    3 ++-
 board/logicpd/zoom1/zoom1.c         |    5 +++--
 board/logicpd/zoom2/zoom2.c         |    3 ++-
 board/mpr2/mpr2.c                   |    4 ++--
 board/ms7720se/ms7720se.c           |    4 ++--
 board/ms7722se/ms7722se.c           |    4 ++--
 board/ms7750se/ms7750se.c           |    4 ++--
 board/overo/overo.c                 |    4 ++--
 board/pandora/pandora.c             |    4 ++--
 board/renesas/MigoR/migo_r.c        |    4 ++--
 board/renesas/ap325rxa/ap325rxa.c   |    4 ++--
 board/renesas/r2dplus/r2dplus.c     |    4 ++--
 board/renesas/r7780mp/r7780mp.c     |    4 ++--
 board/renesas/rsk7203/rsk7203.c     |    4 ++--
 board/renesas/sh7763rdp/sh7763rdp.c |    4 ++--
 board/renesas/sh7785lcr/sh7785lcr.c |    4 ++--
 board/samsung/smdk6400/smdk6400.c   |    4 ++--
 board/ti/beagle/beagle.c            |    4 ++--
 board/ti/evm/evm.c                  |    4 ++--
 board/ti/sdp3430/sdp.c              |    4 ++--
 drivers/i2c/omap24xx_i2c.c          |    3 ++-
 drivers/serial/s3c64xx.c            |    3 ++-
 drivers/serial/serial_s5p.c         |    3 ++-
 drivers/serial/serial_sh.c          |    5 +++--
 31 files changed, 64 insertions(+), 56 deletions(-)
Albert ARIBAUD - Dec. 21, 2010, 6:17 a.m.
Le 21/12/2010 02:27, John Rigby a écrit :
> It can be optimised out by the compiler otherwise resulting
> in obscure errors like a board not booting.
>
> This has been documented in README since 2006 when these were
> first fixed up for GCC 4.x.
>
> Signed-off-by: John Rigby<john.rigby@linaro.org>
> ---

I think this should be considered a bug fix and a potent(ial) help in 
getting as many ARM boards working as possible, and so should be put in 
v2010.12 if still possible.

Amicalement,
Wolfgang Denk - Dec. 21, 2010, 8:07 a.m.
Dear Albert ARIBAUD,

In message <4D104687.4030104@free.fr> you wrote:
> Le 21/12/2010 02:27, John Rigby a =E9crit :
> > It can be optimised out by the compiler otherwise resulting
> > in obscure errors like a board not booting.
> >
> > This has been documented in README since 2006 when these were
> > first fixed up for GCC 4.x.
> >
> > Signed-off-by: John Rigby<john.rigby@linaro.org>
> > ---
>
> I think this should be considered a bug fix and a potent(ial) help in
> getting as many ARM boards working as possible, and so should be put in 
> v2010.12 if still possible.

Indeed.

Shall I consider this a formal "Acked-by:" ?

Best regards,

Wolfgang Denk
Albert ARIBAUD - Dec. 21, 2010, 8:27 a.m.
Le 21/12/2010 09:07, Wolfgang Denk a écrit :
> Dear Albert ARIBAUD,
>
> In message<4D104687.4030104@free.fr>  you wrote:
>> Le 21/12/2010 02:27, John Rigby a =E9crit :
>>> It can be optimised out by the compiler otherwise resulting
>>> in obscure errors like a board not booting.
>>>
>>> This has been documented in README since 2006 when these were
>>> first fixed up for GCC 4.x.
>>>
>>> Signed-off-by: John Rigby<john.rigby@linaro.org>
>>> ---
>>
>> I think this should be considered a bug fix and a potent(ial) help in
>> getting as many ARM boards working as possible, and so should be put in
>> v2010.12 if still possible.
>
> Indeed.
>
> Shall I consider this a formal "Acked-by:" ?

Yes, please.

> Best regards,
>
> Wolfgang Denk

Amicalement,
Wolfgang Denk - Dec. 21, 2010, 7:25 p.m.
Dear John Rigby,

In message <1292894871-1436-1-git-send-email-john.rigby@linaro.org> you wrote:
> It can be optimised out by the compiler otherwise resulting
> in obscure errors like a board not booting.
> 
> This has been documented in README since 2006 when these were
> first fixed up for GCC 4.x.
> 
> Signed-off-by: John Rigby <john.rigby@linaro.org>
> ---
>  arch/arm/cpu/armv7/mx5/speed.c      |    4 ++--
>  arch/blackfin/cpu/serial.c          |    3 ++-
>  arch/m68k/cpu/mcf547x_8x/speed.c    |    4 ++--
>  arch/sh/lib/board.c                 |    4 ++--
>  board/espt/espt.c                   |    4 ++--
>  board/isee/igep0020/igep0020.c      |    4 ++--
>  board/isee/igep0030/igep0030.c      |    4 ++--
>  board/linkstation/linkstation.c     |    3 ++-
>  board/logicpd/zoom1/zoom1.c         |    5 +++--
>  board/logicpd/zoom2/zoom2.c         |    3 ++-
>  board/mpr2/mpr2.c                   |    4 ++--
>  board/ms7720se/ms7720se.c           |    4 ++--
>  board/ms7722se/ms7722se.c           |    4 ++--
>  board/ms7750se/ms7750se.c           |    4 ++--
>  board/overo/overo.c                 |    4 ++--
>  board/pandora/pandora.c             |    4 ++--
>  board/renesas/MigoR/migo_r.c        |    4 ++--
>  board/renesas/ap325rxa/ap325rxa.c   |    4 ++--
>  board/renesas/r2dplus/r2dplus.c     |    4 ++--
>  board/renesas/r7780mp/r7780mp.c     |    4 ++--
>  board/renesas/rsk7203/rsk7203.c     |    4 ++--
>  board/renesas/sh7763rdp/sh7763rdp.c |    4 ++--
>  board/renesas/sh7785lcr/sh7785lcr.c |    4 ++--
>  board/samsung/smdk6400/smdk6400.c   |    4 ++--
>  board/ti/beagle/beagle.c            |    4 ++--
>  board/ti/evm/evm.c                  |    4 ++--
>  board/ti/sdp3430/sdp.c              |    4 ++--
>  drivers/i2c/omap24xx_i2c.c          |    3 ++-
>  drivers/serial/s3c64xx.c            |    3 ++-
>  drivers/serial/serial_s5p.c         |    3 ++-
>  drivers/serial/serial_sh.c          |    5 +++--
>  31 files changed, 64 insertions(+), 56 deletions(-)

Applied to master (with the additional fixes I mentioned).  Thanks.

Best regards,

Wolfgang Denk

Patch

diff --git a/arch/arm/cpu/armv7/mx5/speed.c b/arch/arm/cpu/armv7/mx5/speed.c
index a444def..826b3b1 100644
--- a/arch/arm/cpu/armv7/mx5/speed.c
+++ b/arch/arm/cpu/armv7/mx5/speed.c
@@ -28,10 +28,10 @@ 
 #include <asm/arch/imx-regs.h>
 #include <asm/arch/clock.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
 int get_clocks(void)
 {
-	DECLARE_GLOBAL_DATA_PTR;
-
 #ifdef CONFIG_FSL_ESDHC
 	gd->sdhc_clk = mxc_get_clock(MXC_IPG_PERCLK);
 #endif
diff --git a/arch/blackfin/cpu/serial.c b/arch/blackfin/cpu/serial.c
index 901cb97..650202e 100644
--- a/arch/blackfin/cpu/serial.c
+++ b/arch/blackfin/cpu/serial.c
@@ -42,6 +42,8 @@ 
 #include <asm/blackfin.h>
 #include <asm/mach-common/bits/uart.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
 #ifdef CONFIG_UART_CONSOLE
 
 #include "serial.h"
@@ -95,7 +97,6 @@  void serial_set_baud(uint32_t baud)
  */
 void serial_setbrg(void)
 {
-	DECLARE_GLOBAL_DATA_PTR;
 	serial_set_baud(gd->baudrate);
 }
 
diff --git a/arch/m68k/cpu/mcf547x_8x/speed.c b/arch/m68k/cpu/mcf547x_8x/speed.c
index 2cee488..31130b5 100644
--- a/arch/m68k/cpu/mcf547x_8x/speed.c
+++ b/arch/m68k/cpu/mcf547x_8x/speed.c
@@ -30,13 +30,13 @@ 
 
 #include <asm/immap.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
 /*
  * get_clocks() fills in gd->cpu_clock and gd->bus_clk
  */
 int get_clocks(void)
 {
-	DECLARE_GLOBAL_DATA_PTR;
-
 	gd->bus_clk = CONFIG_SYS_CLK;
 	gd->cpu_clk = (gd->bus_clk * 2);
 
diff --git a/arch/sh/lib/board.c b/arch/sh/lib/board.c
index fe53ab4..8f50b09 100644
--- a/arch/sh/lib/board.c
+++ b/arch/sh/lib/board.c
@@ -32,6 +32,8 @@ 
 #include <miiphy.h>
 #endif
 
+DECLARE_GLOBAL_DATA_PTR;
+
 extern int cpu_init(void);
 extern int board_init(void);
 extern int dram_init(void);
@@ -43,8 +45,6 @@  unsigned long monitor_flash_len = CONFIG_SYS_MONITOR_LEN;
 
 static int sh_flash_init(void)
 {
-	DECLARE_GLOBAL_DATA_PTR;
-
 	gd->bd->bi_flashsize = flash_init();
 	printf("FLASH: %ldMB\n", gd->bd->bi_flashsize / (1024*1024));
 
diff --git a/board/espt/espt.c b/board/espt/espt.c
index 2930858..44ab635 100644
--- a/board/espt/espt.c
+++ b/board/espt/espt.c
@@ -24,6 +24,8 @@ 
 #include <asm/io.h>
 #include <asm/processor.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
 int checkboard(void)
 {
 	puts("BOARD: ESPT-GIGA\n");
@@ -37,8 +39,6 @@  int board_init(void)
 
 int dram_init(void)
 {
-	DECLARE_GLOBAL_DATA_PTR;
-
 	gd->bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;
 	gd->bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
 	printf("DRAM:  %dMB\n", CONFIG_SYS_SDRAM_SIZE / (1024 * 1024));
diff --git a/board/isee/igep0020/igep0020.c b/board/isee/igep0020/igep0020.c
index 3ba541e..36cc924 100644
--- a/board/isee/igep0020/igep0020.c
+++ b/board/isee/igep0020/igep0020.c
@@ -32,6 +32,8 @@ 
 #include <asm/mach-types.h>
 #include "igep0020.h"
 
+DECLARE_GLOBAL_DATA_PTR;
+
 /* GPMC definitions for LAN9221 chips */
 static const u32 gpmc_lan_config[] = {
     NET_LAN9221_GPMC_CONFIG1,
@@ -48,8 +50,6 @@  static const u32 gpmc_lan_config[] = {
  */
 int board_init(void)
 {
-	DECLARE_GLOBAL_DATA_PTR;
-
 	gpmc_init(); /* in SRAM or SDRAM, finish GPMC */
 	/* board id for Linux */
 	gd->bd->bi_arch_number = MACH_TYPE_IGEP0020;
diff --git a/board/isee/igep0030/igep0030.c b/board/isee/igep0030/igep0030.c
index bb4dc3b..6a92735 100644
--- a/board/isee/igep0030/igep0030.c
+++ b/board/isee/igep0030/igep0030.c
@@ -30,14 +30,14 @@ 
 #include <asm/mach-types.h>
 #include "igep0030.h"
 
+DECLARE_GLOBAL_DATA_PTR;
+
 /*
  * Routine: board_init
  * Description: Early hardware init.
  */
 int board_init(void)
 {
-	DECLARE_GLOBAL_DATA_PTR;
-
 	gpmc_init(); /* in SRAM or SDRAM, finish GPMC */
 	/* board id for Linux */
 	gd->bd->bi_arch_number = MACH_TYPE_IGEP0030;
diff --git a/board/linkstation/linkstation.c b/board/linkstation/linkstation.c
index c0d43eb..e564e50 100644
--- a/board/linkstation/linkstation.c
+++ b/board/linkstation/linkstation.c
@@ -32,11 +32,12 @@ 
 #include <pci.h>
 #endif
 
+DECLARE_GLOBAL_DATA_PTR;
+
 extern void init_AVR_DUART(void);
 
 int checkboard (void)
 {
-	DECLARE_GLOBAL_DATA_PTR;
 	char *p;
 	bd_t *bd = gd->bd;
 
diff --git a/board/logicpd/zoom1/zoom1.c b/board/logicpd/zoom1/zoom1.c
index e442d68..efc2e1d 100644
--- a/board/logicpd/zoom1/zoom1.c
+++ b/board/logicpd/zoom1/zoom1.c
@@ -39,14 +39,15 @@ 
 #include <asm/mach-types.h>
 #include "zoom1.h"
 
+DECLARE_GLOBAL_DATA_PTR;
+
+
 /*
  * Routine: board_init
  * Description: Early hardware init.
  */
 int board_init(void)
 {
-	DECLARE_GLOBAL_DATA_PTR;
-
 	gpmc_init(); /* in SRAM or SDRAM, finish GPMC */
 	/* board id for Linux */
 	gd->bd->bi_arch_number = MACH_TYPE_OMAP_LDP;
diff --git a/board/logicpd/zoom2/zoom2.c b/board/logicpd/zoom2/zoom2.c
index e9f6625..76793e4 100644
--- a/board/logicpd/zoom2/zoom2.c
+++ b/board/logicpd/zoom2/zoom2.c
@@ -43,6 +43,8 @@ 
 #include "zoom2.h"
 #include "zoom2_serial.h"
 
+DECLARE_GLOBAL_DATA_PTR;
+
 /*
  * This the the zoom2, board specific, gpmc configuration for the
  * quad uart on the debug board.   The more general gpmc configurations
@@ -120,7 +122,6 @@  void zoom2_identify(void)
  */
 int board_init (void)
 {
-	DECLARE_GLOBAL_DATA_PTR;
 	u32 *gpmc_config;
 
 	gpmc_init ();		/* in SRAM or SDRAM, finish GPMC */
diff --git a/board/mpr2/mpr2.c b/board/mpr2/mpr2.c
index 0ec0c19..4881859 100644
--- a/board/mpr2/mpr2.c
+++ b/board/mpr2/mpr2.c
@@ -24,6 +24,8 @@ 
 #include <asm/io.h>
 #include <asm/processor.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
 int checkboard(void)
 {
 	puts("BOARD: MPR2\n");
@@ -152,8 +154,6 @@  int board_init(void)
 
 int dram_init(void)
 {
-	DECLARE_GLOBAL_DATA_PTR;
-
 	gd->bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;
 	gd->bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
 	printf("SDRAM: %dMB\n", CONFIG_SYS_SDRAM_SIZE / (1024 * 1024));
diff --git a/board/ms7720se/ms7720se.c b/board/ms7720se/ms7720se.c
index f83c120..ab7c338 100644
--- a/board/ms7720se/ms7720se.c
+++ b/board/ms7720se/ms7720se.c
@@ -30,6 +30,8 @@ 
 #include <asm/io.h>
 #include <asm/processor.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
 #define LED_BASE	0xB0800000
 
 int checkboard(void)
@@ -45,8 +47,6 @@  int board_init(void)
 
 int dram_init(void)
 {
-	DECLARE_GLOBAL_DATA_PTR;
-
 	gd->bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;
 	gd->bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
 	printf("DRAM:  %dMB\n", CONFIG_SYS_SDRAM_SIZE / (1024 * 1024));
diff --git a/board/ms7722se/ms7722se.c b/board/ms7722se/ms7722se.c
index 4e40b17..4e67ac6 100644
--- a/board/ms7722se/ms7722se.c
+++ b/board/ms7722se/ms7722se.c
@@ -28,6 +28,8 @@ 
 #include <asm/io.h>
 #include <asm/processor.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
 #define LED_BASE	0xB0800000
 
 int checkboard(void)
@@ -46,8 +48,6 @@  int board_init(void)
 
 int dram_init(void)
 {
-	DECLARE_GLOBAL_DATA_PTR;
-
 	gd->bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;
 	gd->bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
 	printf("DRAM:  %dMB\n", CONFIG_SYS_SDRAM_SIZE / (1024 * 1024));
diff --git a/board/ms7750se/ms7750se.c b/board/ms7750se/ms7750se.c
index 02ff0a3..9370af3 100644
--- a/board/ms7750se/ms7750se.c
+++ b/board/ms7750se/ms7750se.c
@@ -24,6 +24,8 @@ 
 #include <common.h>
 #include <asm/processor.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
 int checkboard(void)
 {
 	puts("BOARD: SH7750/SH7750S/SH7750R Solution Engine\n");
@@ -37,8 +39,6 @@  int board_init(void)
 
 int dram_init (void)
 {
-	DECLARE_GLOBAL_DATA_PTR;
-
 	gd->bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;
 	gd->bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
 	printf("DRAM:  %dMB\n", CONFIG_SYS_SDRAM_SIZE / (1024 * 1024));
diff --git a/board/overo/overo.c b/board/overo/overo.c
index f917e40..4eafdb1 100644
--- a/board/overo/overo.c
+++ b/board/overo/overo.c
@@ -40,6 +40,8 @@ 
 #include <asm/mach-types.h>
 #include "overo.h"
 
+DECLARE_GLOBAL_DATA_PTR;
+
 #define TWL4030_I2C_BUS			0
 #define EXPANSION_EEPROM_I2C_BUS	2
 #define EXPANSION_EEPROM_I2C_ADDRESS	0x51
@@ -87,8 +89,6 @@  static const u32 gpmc_lan_config[] = {
  */
 int board_init(void)
 {
-	DECLARE_GLOBAL_DATA_PTR;
-
 	gpmc_init(); /* in SRAM or SDRAM, finish GPMC */
 	/* board id for Linux */
 	gd->bd->bi_arch_number = MACH_TYPE_OVERO;
diff --git a/board/pandora/pandora.c b/board/pandora/pandora.c
index 355e9ea..992e9f7 100644
--- a/board/pandora/pandora.c
+++ b/board/pandora/pandora.c
@@ -37,6 +37,8 @@ 
 #include <asm/mach-types.h>
 #include "pandora.h"
 
+DECLARE_GLOBAL_DATA_PTR;
+
 #define TWL4030_BB_CFG_BBCHEN		(1 << 4)
 #define TWL4030_BB_CFG_BBSEL_3200MV	(3 << 2)
 #define TWL4030_BB_CFG_BBISEL_500UA	2
@@ -47,8 +49,6 @@ 
  */
 int board_init(void)
 {
-	DECLARE_GLOBAL_DATA_PTR;
-
 	gpmc_init(); /* in SRAM or SDRAM, finish GPMC */
 	/* board id for Linux */
 	gd->bd->bi_arch_number = MACH_TYPE_OMAP3_PANDORA;
diff --git a/board/renesas/MigoR/migo_r.c b/board/renesas/MigoR/migo_r.c
index c0f26ac..75b653f 100644
--- a/board/renesas/MigoR/migo_r.c
+++ b/board/renesas/MigoR/migo_r.c
@@ -28,6 +28,8 @@ 
 #include <asm/io.h>
 #include <asm/processor.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
 int checkboard(void)
 {
 	puts("BOARD: Renesas MigoR\n");
@@ -41,8 +43,6 @@  int board_init(void)
 
 int dram_init (void)
 {
-	DECLARE_GLOBAL_DATA_PTR;
-
 	gd->bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;
 	gd->bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
 	printf("DRAM:  %dMB\n", CONFIG_SYS_SDRAM_SIZE / (1024 * 1024));
diff --git a/board/renesas/ap325rxa/ap325rxa.c b/board/renesas/ap325rxa/ap325rxa.c
index be919f5..758e6f4 100644
--- a/board/renesas/ap325rxa/ap325rxa.c
+++ b/board/renesas/ap325rxa/ap325rxa.c
@@ -23,6 +23,8 @@ 
 #include <asm/io.h>
 #include <asm/processor.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
 /* PRI control register */
 #define PRPRICR5	0xFF800048 /* LMB */
 #define PRPRICR5_D	0x2a
@@ -143,8 +145,6 @@  int board_init(void)
 
 int dram_init(void)
 {
-	DECLARE_GLOBAL_DATA_PTR;
-
 	gd->bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;
 	gd->bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
 	printf("DRAM:  %dMB\n", CONFIG_SYS_SDRAM_SIZE / (1024 * 1024));
diff --git a/board/renesas/r2dplus/r2dplus.c b/board/renesas/r2dplus/r2dplus.c
index 0c08d68..b70395d 100644
--- a/board/renesas/r2dplus/r2dplus.c
+++ b/board/renesas/r2dplus/r2dplus.c
@@ -28,6 +28,8 @@ 
 #include <asm/io.h>
 #include <asm/pci.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
 int checkboard(void)
 {
 	puts("BOARD: Renesas Solutions R2D Plus\n");
@@ -41,8 +43,6 @@  int board_init(void)
 
 int dram_init(void)
 {
-	DECLARE_GLOBAL_DATA_PTR;
-
 	gd->bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;
 	gd->bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
 	printf("DRAM:  %dMB\n", CONFIG_SYS_SDRAM_SIZE / (1024 * 1024));
diff --git a/board/renesas/r7780mp/r7780mp.c b/board/renesas/r7780mp/r7780mp.c
index 396e4b6..0b80099 100644
--- a/board/renesas/r7780mp/r7780mp.c
+++ b/board/renesas/r7780mp/r7780mp.c
@@ -26,6 +26,8 @@ 
 #include <netdev.h>
 #include "r7780mp.h"
 
+DECLARE_GLOBAL_DATA_PTR;
+
 int checkboard(void)
 {
 #if defined(CONFIG_R7780MP)
@@ -46,8 +48,6 @@  int board_init(void)
 
 int dram_init(void)
 {
-	DECLARE_GLOBAL_DATA_PTR;
-
 	gd->bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;
 	gd->bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
 	printf("DRAM:  %dMB\n", CONFIG_SYS_SDRAM_SIZE / (1024 * 1024));
diff --git a/board/renesas/rsk7203/rsk7203.c b/board/renesas/rsk7203/rsk7203.c
index fbf2e23..06552c0 100644
--- a/board/renesas/rsk7203/rsk7203.c
+++ b/board/renesas/rsk7203/rsk7203.c
@@ -26,6 +26,8 @@ 
 #include <asm/io.h>
 #include <asm/processor.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
 int checkboard(void)
 {
 	puts("BOARD: Renesas Technology RSK7203\n");
@@ -39,8 +41,6 @@  int board_init(void)
 
 int dram_init(void)
 {
-	DECLARE_GLOBAL_DATA_PTR;
-
 	gd->bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;
 	gd->bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
 	printf("DRAM:  %dMB\n", CONFIG_SYS_SDRAM_SIZE / (1024 * 1024));
diff --git a/board/renesas/sh7763rdp/sh7763rdp.c b/board/renesas/sh7763rdp/sh7763rdp.c
index 88bab70..9f44b9a 100644
--- a/board/renesas/sh7763rdp/sh7763rdp.c
+++ b/board/renesas/sh7763rdp/sh7763rdp.c
@@ -25,6 +25,8 @@ 
 #include <asm/io.h>
 #include <asm/processor.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
 #define CPU_CMDREG	0xB1000006
 #define PDCR        0xffef0006
 #define PECR        0xffef0008
@@ -64,8 +66,6 @@  int board_init(void)
 
 int dram_init(void)
 {
-	DECLARE_GLOBAL_DATA_PTR;
-
 	gd->bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;
 	gd->bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
 	printf("DRAM:  %dMB\n", CONFIG_SYS_SDRAM_SIZE / (1024 * 1024));
diff --git a/board/renesas/sh7785lcr/sh7785lcr.c b/board/renesas/sh7785lcr/sh7785lcr.c
index cad3905..904e755 100644
--- a/board/renesas/sh7785lcr/sh7785lcr.c
+++ b/board/renesas/sh7785lcr/sh7785lcr.c
@@ -23,6 +23,8 @@ 
 #include <asm/pci.h>
 #include <netdev.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
 int checkboard(void)
 {
 	puts("BOARD: Renesas Technology Corp. R0P7785LC0011RL\n");
@@ -36,8 +38,6 @@  int board_init(void)
 
 int dram_init(void)
 {
-	DECLARE_GLOBAL_DATA_PTR;
-
 	gd->bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;
 	gd->bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
 	printf("DRAM:  %dMB\n", CONFIG_SYS_SDRAM_SIZE / (1024 * 1024));
diff --git a/board/samsung/smdk6400/smdk6400.c b/board/samsung/smdk6400/smdk6400.c
index 78aaa9e..bc22f0f 100644
--- a/board/samsung/smdk6400/smdk6400.c
+++ b/board/samsung/smdk6400/smdk6400.c
@@ -32,6 +32,8 @@ 
 #include <netdev.h>
 #include <asm/arch/s3c6400.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
 /* ------------------------------------------------------------------------- */
 #define CS8900_Tacs	0x0	/* 0clk		address set-up		*/
 #define CS8900_Tcos	0x4	/* 4clk		chip selection set-up	*/
@@ -63,8 +65,6 @@  static void cs8900_pre_init(void)
 
 int board_init(void)
 {
-	DECLARE_GLOBAL_DATA_PTR;
-
 	cs8900_pre_init();
 
 	/* NOR-flash in SROM0 */
diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c
index d9b6f01..c066d6e 100644
--- a/board/ti/beagle/beagle.c
+++ b/board/ti/beagle/beagle.c
@@ -51,6 +51,8 @@ 
 
 #define BEAGLE_NO_EEPROM		0xffffffff
 
+DECLARE_GLOBAL_DATA_PTR;
+
 static struct {
 	unsigned int device_vendor;
 	unsigned char revision;
@@ -66,8 +68,6 @@  static struct {
  */
 int board_init(void)
 {
-	DECLARE_GLOBAL_DATA_PTR;
-
 	gpmc_init(); /* in SRAM or SDRAM, finish GPMC */
 	/* board id for Linux */
 	gd->bd->bi_arch_number = MACH_TYPE_OMAP3_BEAGLE;
diff --git a/board/ti/evm/evm.c b/board/ti/evm/evm.c
index c2b6350..aaf3033 100644
--- a/board/ti/evm/evm.c
+++ b/board/ti/evm/evm.c
@@ -37,6 +37,8 @@ 
 #include <asm/mach-types.h>
 #include "evm.h"
 
+DECLARE_GLOBAL_DATA_PTR;
+
 static u32 omap3_evm_version;
 
 u32 get_omap3_evm_rev(void)
@@ -103,8 +105,6 @@  u8 omap3_evm_need_extvbus(void)
  */
 int board_init(void)
 {
-	DECLARE_GLOBAL_DATA_PTR;
-
 	gpmc_init(); /* in SRAM or SDRAM, finish GPMC */
 	/* board id for Linux */
 	gd->bd->bi_arch_number = MACH_TYPE_OMAP3EVM;
diff --git a/board/ti/sdp3430/sdp.c b/board/ti/sdp3430/sdp.c
index 0d8e20d..72f0984 100644
--- a/board/ti/sdp3430/sdp.c
+++ b/board/ti/sdp3430/sdp.c
@@ -31,6 +31,8 @@ 
 #include <asm/mach-types.h>
 #include "sdp.h"
 
+DECLARE_GLOBAL_DATA_PTR;
+
 const omap3_sysinfo sysinfo = {
 	DDR_DISCRETE,
 	"OMAP3 SDP3430 board",
@@ -101,8 +103,6 @@  extern struct gpmc *gpmc_cfg;
  */
 int board_init(void)
 {
-	DECLARE_GLOBAL_DATA_PTR;
-
 	gpmc_init(); /* in SRAM or SDRAM, finish GPMC */
 	/* TODO: Dynamically pop out CS mapping and program accordingly */
 	/* Configure devices for default ON ON ON settings */
diff --git a/drivers/i2c/omap24xx_i2c.c b/drivers/i2c/omap24xx_i2c.c
index fab49fd..215be34 100644
--- a/drivers/i2c/omap24xx_i2c.c
+++ b/drivers/i2c/omap24xx_i2c.c
@@ -27,6 +27,8 @@ 
 
 #include "omap24xx_i2c.h"
 
+DECLARE_GLOBAL_DATA_PTR;
+
 #define I2C_TIMEOUT	1000
 
 static void wait_for_bb (void);
@@ -40,7 +42,6 @@  static unsigned int current_bus;
 
 void i2c_init (int speed, int slaveadd)
 {
-	DECLARE_GLOBAL_DATA_PTR;
 	int psc, fsscll, fssclh;
 	int hsscll = 0, hssclh = 0;
 	u32 scll, sclh;
diff --git a/drivers/serial/s3c64xx.c b/drivers/serial/s3c64xx.c
index 6d22df7..a88e930 100644
--- a/drivers/serial/s3c64xx.c
+++ b/drivers/serial/s3c64xx.c
@@ -25,6 +25,8 @@ 
 
 #include <asm/arch/s3c6400.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
 #ifdef CONFIG_SERIAL1
 #define UART_NR	S3C64XX_UART0
 
@@ -68,7 +70,6 @@  static const int udivslot[] = {
 
 void serial_setbrg(void)
 {
-	DECLARE_GLOBAL_DATA_PTR;
 	s3c64xx_uart *const uart = s3c64xx_get_base_uart(UART_NR);
 	u32 pclk = get_PCLK();
 	u32 baudrate = gd->baudrate;
diff --git a/drivers/serial/serial_s5p.c b/drivers/serial/serial_s5p.c
index 36333c3..9c1cbf4 100644
--- a/drivers/serial/serial_s5p.c
+++ b/drivers/serial/serial_s5p.c
@@ -27,6 +27,8 @@ 
 #include <asm/arch/clk.h>
 #include <serial.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
 static inline struct s5p_uart *s5p_get_base_uart(int dev_index)
 {
 	u32 offset = dev_index * sizeof(struct s5p_uart);
@@ -61,7 +63,6 @@  static const int udivslot[] = {
 
 void serial_setbrg_dev(const int dev_index)
 {
-	DECLARE_GLOBAL_DATA_PTR;
 	struct s5p_uart *const uart = s5p_get_base_uart(dev_index);
 	u32 uclk = get_uart_clk(dev_index);
 	u32 baudrate = gd->baudrate;
diff --git a/drivers/serial/serial_sh.c b/drivers/serial/serial_sh.c
index bfdb2ce..30dea7c 100644
--- a/drivers/serial/serial_sh.c
+++ b/drivers/serial/serial_sh.c
@@ -21,6 +21,9 @@ 
 #include <asm/io.h>
 #include <asm/processor.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
+
 #if defined(CONFIG_CONS_SCIF0)
 # define SCIF_BASE	SCIF0_BASE
 #elif defined(CONFIG_CONS_SCIF1)
@@ -131,8 +134,6 @@ 
 
 void serial_setbrg(void)
 {
-	DECLARE_GLOBAL_DATA_PTR;
-
 	writeb(SCBRR_VALUE(gd->baudrate, CONFIG_SYS_CLK_FREQ), SCBRR);
 }