Signed-off-by: Peter Tyser <[EMAIL PROTECTED]>
---
 common/cmd_mem.c |   32 ++++++++++++++++++++++----------
 1 files changed, 22 insertions(+), 10 deletions(-)

diff --git a/common/cmd_mem.c b/common/cmd_mem.c
index f3299bd..6eb1fd4 100644
--- a/common/cmd_mem.c
+++ b/common/cmd_mem.c
@@ -43,6 +43,8 @@
     || defined(CONFIG_CMD_PCI)         \
     || defined(CONFIG_CMD_PORTIO)
 
+DECLARE_GLOBAL_DATA_PTR;
+
 int cmd_get_data_size(char* arg, int default_size)
 {
        /* Check for a size specification .b, .w or .l.
@@ -83,7 +85,7 @@ uint  dp_last_addr, dp_last_size;
 uint   dp_last_length = 0x40;
 uint   mm_last_addr, mm_last_size;
 
-static ulong   base_address = 0;
+static ulong   base_address __attribute__ ((section(".data"))) = 0;
 
 /* Memory Display
  *
@@ -103,8 +105,10 @@ int do_mem_md ( cmd_tbl_t *cmdtp, int flag, int argc, char 
*argv[])
        /* We use the last specified parameters, unless new ones are
         * entered.
         */
-       addr = dp_last_addr;
-       size = dp_last_size;
+       if (gd->flags & GD_FLG_RELOC) {
+               addr = dp_last_addr;
+               size = dp_last_size;
+       }
        length = dp_last_length;
 
        if (argc < 2) {
@@ -183,9 +187,12 @@ int do_mem_md ( cmd_tbl_t *cmdtp, int flag, int argc, char 
*argv[])
        }
 #endif
 
-       dp_last_addr = addr;
-       dp_last_length = length;
-       dp_last_size = size;
+       if (gd->flags & GD_FLG_RELOC) {
+               dp_last_addr = addr;
+               dp_last_length = length;
+               dp_last_size = size;
+       }
+
        return (rc);
 }
 
@@ -1025,8 +1032,10 @@ mod_mem(cmd_tbl_t *cmdtp, int incrflag, int flag, int 
argc, char *argv[])
        /* We use the last specified parameters, unless new ones are
         * entered.
         */
-       addr = mm_last_addr;
-       size = mm_last_size;
+       if (gd->flags & GD_FLG_RELOC) {
+               addr = mm_last_addr;
+               size = mm_last_size;
+       }
 
        if ((flag & CMD_FLAG_REPEAT) == 0) {
                /* New command specified.  Check for a size specification.
@@ -1106,8 +1115,11 @@ mod_mem(cmd_tbl_t *cmdtp, int incrflag, int flag, int 
argc, char *argv[])
                }
        } while (nbytes);
 
-       mm_last_addr = addr;
-       mm_last_size = size;
+       if (gd->flags & GD_FLG_RELOC) {
+               mm_last_addr = addr;
+               mm_last_size = size;
+       }
+
        return 0;
 }
 
-- 
1.5.4.3

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to