Patch "Replace CONFIG_SYS_GBL_DATA_SIZE by auto-generated value"
(sha1: 25ddd1fb0a2281b182529afbc8fda5de2dc16d96)
introduce GENERATED_GBL_DATA_SIZE which is sizeof aligned gd_t
(currently 0x40).
Microblaze configs used 0x40(128) because this place also contained
board info structure which lies on the top of ram.

This patch is fixing this scheme by extending CONFIG_SYS_GBL_DATA_OFFSET
value. Doubled GENERATED_GBL_DATA_SIZE size is enough to store
gd_t and bd_t structures.

U-Boot is placed to the top of the ram (for example 0xd7ffffff)
and bd structure was moved out of ram.

For example:
Current: gd 0xd7ffffc0, bd 0xd8000000
Fixed:   gd 0xd7ffff80, bd 0xd7ffffc0

Signed-off-by: Michal Simek <[email protected]>
---
 arch/microblaze/lib/board.c          |    2 +-
 include/configs/microblaze-generic.h |    7 +++++--
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/arch/microblaze/lib/board.c b/arch/microblaze/lib/board.c
index eeef579..e215684 100644
--- a/arch/microblaze/lib/board.c
+++ b/arch/microblaze/lib/board.c
@@ -96,7 +96,7 @@ void board_init (void)
        ulong flash_size = 0;
 #endif
        asm ("nop");    /* FIXME gd is not initialize - wait */
-       memset ((void *)gd, 0, GENERATED_GBL_DATA_SIZE);
+       memset ((void *)gd, 0, 2 * GENERATED_GBL_DATA_SIZE); /* gd/bd space */
        gd->bd = (bd_t *) (gd + 1);     /* At end of global data */
        gd->baudrate = CONFIG_BAUDRATE;
        bd = gd->bd;
diff --git a/include/configs/microblaze-generic.h 
b/include/configs/microblaze-generic.h
index 75e4e07..ec152bf 100644
--- a/include/configs/microblaze-generic.h
+++ b/include/configs/microblaze-generic.h
@@ -135,14 +135,17 @@
 #define        CONFIG_SYS_MEMTEST_END          (CONFIG_SYS_SDRAM_BASE + 0x1000)
 
 /* global pointer */
+/* Allocate 2 * GENERATED_GBL_DATA_SIZE (0x40) size for global data and
+ * board info structure(size 0x24). Would be better to use sizeof but
+ * this requires more changes to asm code */
 /* start of global data */
 #define        CONFIG_SYS_GBL_DATA_OFFSET \
        (CONFIG_SYS_SDRAM_BASE + CONFIG_SYS_SDRAM_SIZE \
-                               - GENERATED_GBL_DATA_SIZE)
+                               - 2 * GENERATED_GBL_DATA_SIZE)
 
 /* monitor code */
 #define        SIZE                            0x40000
-#define        CONFIG_SYS_MONITOR_LEN          (SIZE - GENERATED_GBL_DATA_SIZE)
+#define        CONFIG_SYS_MONITOR_LEN          SIZE
 #define        CONFIG_SYS_MONITOR_BASE \
                        (CONFIG_SYS_GBL_DATA_OFFSET - CONFIG_SYS_MONITOR_LEN)
 #define        CONFIG_SYS_MONITOR_END \
-- 
1.5.5.6

_______________________________________________
U-Boot mailing list
[email protected]
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to