summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG4
-rw-r--r--examples/stubs.c9
-rw-r--r--include/configs/HMI10.h2
-rw-r--r--lib_arm/board.c3
-rw-r--r--lib_i386/board.c2
-rw-r--r--lib_m68k/board.c2
-rw-r--r--lib_mips/board.c3
-rw-r--r--lib_nios/board.c3
-rw-r--r--lib_ppc/board.c2
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 */