diff options
-rw-r--r-- | CHANGELOG | 4 | ||||
-rw-r--r-- | examples/stubs.c | 9 | ||||
-rw-r--r-- | include/configs/HMI10.h | 2 | ||||
-rw-r--r-- | lib_arm/board.c | 3 | ||||
-rw-r--r-- | lib_i386/board.c | 2 | ||||
-rw-r--r-- | lib_m68k/board.c | 2 | ||||
-rw-r--r-- | lib_mips/board.c | 3 | ||||
-rw-r--r-- | lib_nios/board.c | 3 | ||||
-rw-r--r-- | lib_ppc/board.c | 2 |
9 files changed, 29 insertions, 1 deletions
diff --git a/CHANGELOG b/CHANGELOG index 62dfd9c0699..efd8663a3e2 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,6 +2,10 @@ Changes since U-Boot 1.1.1: ====================================================================== +* Patches by Richard Woodruff, 10 Jun 2004: + - fix problems with examples/stubs.c for GCC >= 3.4 + - fix problems with gd initialization + * Patch by Curt Brune, 17 May 2004: - Add support for Samsung S3C4510B CPU (ARM7tdmi based SoC) - Add support for ESPD-Inc. EVB4510 Board diff --git a/examples/stubs.c b/examples/stubs.c index 6f563ed9ba8..324a953e186 100644 --- a/examples/stubs.c +++ b/examples/stubs.c @@ -1,5 +1,9 @@ #include <exports.h> +#ifndef GCC_VERSION +#define GCC_VERSION (__GNUC__ * 1000 + __GNUC_MINOR__) +#endif /* GCC_VERSION */ + #if defined(CONFIG_I386) /* * x86 does not have a dedicated register to store the pointer to @@ -117,7 +121,10 @@ gd_t *global_data; * implementation. On the other hand, asm() statements with * arguments can be used only inside the functions (gcc limitation) */ -static void __attribute__((unused)) dummy(void) +#if GCC_VERSION < 3004 +static +#endif /* GCC_VERSION */ +void __attribute__((unused)) dummy(void) { #include <_exports.h> } diff --git a/include/configs/HMI10.h b/include/configs/HMI10.h index 62ca616deeb..ca926a73244 100644 --- a/include/configs/HMI10.h +++ b/include/configs/HMI10.h @@ -131,6 +131,7 @@ CFG_CMD_BMP | \ CFG_CMD_DATE | \ CFG_CMD_DHCP | \ + CFG_CMD_FAT | \ CFG_CMD_I2C | \ CFG_CMD_IDE ) #else @@ -138,6 +139,7 @@ CFG_CMD_ASKENV | \ CFG_CMD_DATE | \ CFG_CMD_DHCP | \ + CFG_CMD_FAT | \ CFG_CMD_I2C | \ CFG_CMD_IDE ) #endif diff --git a/lib_arm/board.c b/lib_arm/board.c index e97e158bf6e..7673d063f5c 100644 --- a/lib_arm/board.c +++ b/lib_arm/board.c @@ -217,6 +217,9 @@ void start_armboot (void) /* Pointer is writable since we allocated a register for it */ gd = (gd_t*)(_armboot_start - CFG_MALLOC_LEN - sizeof(gd_t)); + /* compiler optimization barrier needed for GCC >= 3.4 */ + __asm__ __volatile__("": : :"memory"); + memset ((void*)gd, 0, sizeof (gd_t)); gd->bd = (bd_t*)((char*)gd - sizeof(bd_t)); memset (gd->bd, 0, sizeof (bd_t)); diff --git a/lib_i386/board.c b/lib_i386/board.c index b26d3d5eb11..a1808142e0a 100644 --- a/lib_i386/board.c +++ b/lib_i386/board.c @@ -244,6 +244,8 @@ void start_i386boot (void) show_boot_progress(0x21); gd = global_data = &gd_data; + /* compiler optimization barrier needed for GCC >= 3.4 */ + __asm__ __volatile__("": : :"memory"); memset (gd, 0, sizeof (gd_t)); gd->bd = &bd_data; diff --git a/lib_m68k/board.c b/lib_m68k/board.c index 06b3bd50563..7e586fea5c0 100644 --- a/lib_m68k/board.c +++ b/lib_m68k/board.c @@ -257,6 +257,8 @@ board_init_f (ulong bootflag) /* Pointer is writable since we allocated a register for it */ gd = (gd_t *) (CFG_INIT_RAM_ADDR + CFG_GBL_DATA_OFFSET); + /* compiler optimization barrier needed for GCC >= 3.4 */ + __asm__ __volatile__("": : :"memory"); /* Clear initial global data */ memset ((void *) gd, 0, sizeof (gd_t)); diff --git a/lib_mips/board.c b/lib_mips/board.c index 7f5fa808f8d..12df61fdde3 100644 --- a/lib_mips/board.c +++ b/lib_mips/board.c @@ -193,6 +193,9 @@ void board_init_f(ulong bootflag) /* 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 ((void *)gd, 0, sizeof (gd_t)); for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) { diff --git a/lib_nios/board.c b/lib_nios/board.c index 30044f7adeb..e6cda521ed1 100644 --- a/lib_nios/board.c +++ b/lib_nios/board.c @@ -117,6 +117,9 @@ void board_init (void) * Nios treats CFG_GBL_DATA_OFFSET as an address. */ gd = (gd_t *)CFG_GBL_DATA_OFFSET; + /* compiler optimization barrier needed for GCC >= 3.4 */ + __asm__ __volatile__("": : :"memory"); + memset( gd, 0, CFG_GBL_DATA_SIZE ); gd->bd = (bd_t *)(gd+1); /* At end of global data */ diff --git a/lib_ppc/board.c b/lib_ppc/board.c index c9e38dfc328..7560a42d443 100644 --- a/lib_ppc/board.c +++ b/lib_ppc/board.c @@ -353,6 +353,8 @@ void board_init_f (ulong bootflag) /* Pointer is writable since we allocated a register for it */ gd = (gd_t *) (CFG_INIT_RAM_ADDR + CFG_GBL_DATA_OFFSET); + /* compiler optimization barrier needed for GCC >= 3.4 */ + __asm__ __volatile__("": : :"memory"); #if !(defined(CONFIG_8260) || defined(CONFIG_MPC8560)) /* Clear initial global data */ |