Initial revision
diff --git a/include/cmd_mem.h b/include/cmd_mem.h
new file mode 100644
index 0000000..aa0c540
--- /dev/null
+++ b/include/cmd_mem.h
@@ -0,0 +1,112 @@
+/*
+ * (C) Copyright 2000
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/*
+ * Memory Functions
+ */
+#ifndef	_CMD_MEM_H
+#define _CMD_MEM_H
+
+#if (CONFIG_COMMANDS & CFG_CMD_MEMORY)
+#define CMD_TBL_MD	MK_CMD_TBL_ENTRY(					\
+	"md",		2,	3,	1,	do_mem_md,			\
+	"md      - memory display\n",						\
+	"[.b, .w, .l] address [# of objects]\n    - memory display\n"		\
+),
+#define CMD_TBL_MM	MK_CMD_TBL_ENTRY(					\
+ 	"mm",		2,	2,	1,	do_mem_mm,			\
+	"mm      - memory modify (auto-incrementing)\n",			\
+	"[.b, .w, .l] address\n"						\
+	"    - memory modify, auto increment address\n"				\
+),
+#define CMD_TBL_NM	MK_CMD_TBL_ENTRY(					\
+	"nm",		2,	2,	1,	do_mem_nm,			\
+	"nm      - memory modify (constant address)\n",				\
+	"[.b, .w, .l] address\n    - memory modify, read and keep address\n"	\
+),
+#define CMD_TBL_MW	MK_CMD_TBL_ENTRY(					\
+	"mw",		2,	4,	1,	do_mem_mw,			\
+	"mw      - memory write (fill)\n",					\
+	"[.b, .w, .l] address value [count]\n    - write memory\n"		\
+),
+#define	CMD_TBL_CP	MK_CMD_TBL_ENTRY(					\
+	"cp",		2,	4,	1,	do_mem_cp,			\
+	"cp      - memory copy\n",						\
+	"[.b, .w, .l] source target count\n    - copy memory\n"			\
+),
+#define	CMD_TBL_CMP	MK_CMD_TBL_ENTRY(					\
+	"cmp",		3,	4,	1,	do_mem_cmp,			\
+	"cmp     - memory compare\n",						\
+	"[.b, .w, .l] addr1 addr2 count\n    - compare memory\n"		\
+),
+#define	CMD_TBL_CRC	MK_CMD_TBL_ENTRY(					\
+	"crc32",	3,	4,	1,	do_mem_crc,			\
+	"crc32   - checksum calculation\n",					\
+	"address count [addr]\n    - compute CRC32 checksum [save at addr]\n"	\
+),
+#define CMD_TBL_BASE	MK_CMD_TBL_ENTRY(					\
+	"base",		2,	2,	1,	do_mem_base,			\
+	"base    - print or set address offset\n",				\
+	"\n    - print address offset for memory commands\n"			\
+	"base off\n    - set address offset for memory commands to 'off'\n"	\
+),
+/*
+ * Require full name for "loop" and "mtest" because these are infinite loops!
+ */
+#define CMD_TBL_LOOP	MK_CMD_TBL_ENTRY(					\
+	"loop",		4,	3,	1,	do_mem_loop,			\
+	"loop    - infinite loop on address range\n",				\
+	"[.b, .w, .l] address number_of_objects\n"				\
+	"    - loop on a set of addresses\n"					\
+),
+#define CMD_TBL_MTEST	MK_CMD_TBL_ENTRY(					\
+	"mtest",	5,	4,	1,	do_mem_mtest,			\
+	"mtest   - simple RAM test\n",						\
+	"[start [end [pattern]]]\n"						\
+	"    - simple RAM read/write test\n"					\
+),
+int do_mem_md    (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_mem_mm    (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+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[]);
+int do_mem_cp    (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_mem_cmp   (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+int do_mem_crc   (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+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[]);
+int do_mem_mtest (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+
+#else
+#define CMD_TBL_MD
+#define CMD_TBL_MM
+#define CMD_TBL_NM
+#define CMD_TBL_MW
+#define CMD_TBL_CP
+#define CMD_TBL_CMP
+#define CMD_TBL_CRC
+#define CMD_TBL_BASE
+#define CMD_TBL_LOOP
+#define CMD_TBL_MTEST
+#endif	/* CFG_CMD_MEMORY */
+
+#endif	/* _CMD_MEM_H */