[U-Boot] [PATCH] RFC: sandbox: Change md command to use map_physmem

Simon Glass sjg at chromium.org
Tue Oct 25 14:59:41 CEST 2011


Sandbox wants to support commands which use memory. The map_physmen()
call provides this feature, so should be used more consistently in
U-Boot.

Note: We will need a utility function which includes the mapping and
printing of an error to avoid code size increase.

Signed-off-by: Simon Glass <sjg at chromium.org>
---
 common/cmd_mem.c |   15 +++++++++++++--
 1 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/common/cmd_mem.c b/common/cmd_mem.c
index 28476d7..cf59f6d 100644
--- a/common/cmd_mem.c
+++ b/common/cmd_mem.c
@@ -33,6 +33,7 @@
 #include <dataflash.h>
 #endif
 #include <watchdog.h>
+#include <asm/io.h>
 
 #ifdef	CMD_MEM_DEBUG
 #define	PRINTF(fmt,args...)	printf (fmt ,##args)
@@ -141,9 +142,19 @@ int do_mem_md ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 # endif
 
 	{
+		int bytes = size * length;
+		char *buf = map_physmem(addr, bytes, MAP_WRBACK);
+
+		/* TODO: create a utility function to map and print error */
+		if (!buf) {
+			puts("Failed to map physical memory\n");
+			return 1;
+		}
+
 		/* Print the lines. */
-		print_buffer(addr, (void*)addr, size, length, DISP_LINE_LEN/size);
-		addr += size*length;
+		print_buffer(addr, buf, size, length, DISP_LINE_LEN / size);
+		addr += bytes;
+		unmap_physmem(buf, bytes);
 	}
 #endif
 
-- 
1.7.3.1



More information about the U-Boot mailing list