From 27b207fd0a0941b03f27e2a82c0468b1a090c745 Mon Sep 17 00:00:00 2001 From: wdenk Date: Thu, 24 Jul 2003 23:38:38 +0000 Subject: * Implement new mechanism to export U-Boot's functions to standalone applications: instead of using (PPC-specific) system calls we now use a jump table; please see doc/README.standalone for details * Patch by Dave Westwood, 24 Jul 2003: added support for Unity OS (a proprietary OS) --- common/cmd_mem.c | 39 ++++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 13 deletions(-) (limited to 'common/cmd_mem.c') diff --git a/common/cmd_mem.c b/common/cmd_mem.c index 7e6c19e..3e22598 100644 --- a/common/cmd_mem.c +++ b/common/cmd_mem.c @@ -53,6 +53,8 @@ int cmd_get_data_size(char* arg, int default_size) return 2; case 'l': return 4; + default: + return -1; } } return default_size; @@ -86,9 +88,10 @@ static ulong base_address = 0; #define DISP_LINE_LEN 16 int do_mem_md ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { - ulong addr, size, length; + ulong addr, length; ulong i, nbytes, linebytes; u_char *cp; + int size; int rc = 0; /* We use the last specified parameters, unless new ones are @@ -107,7 +110,8 @@ int do_mem_md ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) /* New command specified. Check for a size specification. * Defaults to long if no or incorrect specification. */ - size = cmd_get_data_size(argv[0], 4); + if ((size = cmd_get_data_size(argv[0], 4)) < 0) + return 1; /* Address is specified since argc > 1 */ @@ -199,7 +203,8 @@ int do_mem_nm ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) int do_mem_mw ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { - ulong addr, size, writeval, count; + ulong addr, writeval, count; + int size; if ((argc < 3) || (argc > 4)) { printf ("Usage:\n%s\n", cmdtp->usage); @@ -208,7 +213,8 @@ int do_mem_mw ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) /* Check for size specification. */ - size = cmd_get_data_size(argv[0], 4); + if ((size = cmd_get_data_size(argv[0], 4)) < 1) + return 1; /* Address is specified since argc > 1 */ @@ -240,7 +246,8 @@ int do_mem_mw ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) int do_mem_cmp (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { - ulong size, addr1, addr2, count, ngood; + ulong addr1, addr2, count, ngood; + int size; int rcode = 0; if (argc != 4) { @@ -250,7 +257,8 @@ int do_mem_cmp (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) /* Check for size specification. */ - size = cmd_get_data_size(argv[0], 4); + if ((size = cmd_get_data_size(argv[0], 4)) < 0) + return 1; addr1 = simple_strtoul(argv[1], NULL, 16); addr1 += base_address; @@ -316,7 +324,8 @@ int do_mem_cmp (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) int do_mem_cp ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { - ulong addr, size, dest, count; + ulong addr, dest, count; + int size; if (argc != 4) { printf ("Usage:\n%s\n", cmdtp->usage); @@ -325,7 +334,8 @@ int do_mem_cp ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) /* Check for size specification. */ - size = cmd_get_data_size(argv[0], 4); + if ((size = cmd_get_data_size(argv[0], 4)) < 0) + return 1; addr = simple_strtoul(argv[1], NULL, 16); addr += base_address; @@ -458,7 +468,8 @@ int do_mem_base (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) int do_mem_loop (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { - ulong addr, size, length, i, junk; + ulong addr, length, i, junk; + int size; volatile uint *longp; volatile ushort *shortp; volatile u_char *cp; @@ -471,7 +482,8 @@ int do_mem_loop (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) /* Check for a size spefication. * Defaults to long if no or incorrect specification. */ - size = cmd_get_data_size(argv[0], 4); + if ((size = cmd_get_data_size(argv[0], 4)) < 0) + return 1; /* Address is always specified. */ @@ -839,8 +851,8 @@ int do_mem_mtest (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) static int mod_mem(cmd_tbl_t *cmdtp, int incrflag, int flag, int argc, char *argv[]) { - ulong addr, size, i; - int nbytes; + ulong addr, i; + int nbytes, size; extern char console_buffer[]; if (argc != 2) { @@ -861,7 +873,8 @@ mod_mem(cmd_tbl_t *cmdtp, int incrflag, int flag, int argc, char *argv[]) /* New command specified. Check for a size specification. * Defaults to long if no or incorrect specification. */ - size = cmd_get_data_size(argv[0], 4); + if ((size = cmd_get_data_size(argv[0], 4)) < 0) + return 1; /* Address is specified since argc > 1 */ -- cgit v1.1