summaryrefslogtreecommitdiff
path: root/lib_arm
diff options
context:
space:
mode:
Diffstat (limited to 'lib_arm')
-rw-r--r--lib_arm/board.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/lib_arm/board.c b/lib_arm/board.c
index e97e158..7673d06 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));