+#else /* CONFIG_CRC32_VERIFY */
+
+int do_mem_crc (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+ ulong addr, length;
+ ulong crc;
+ ulong *ptr;
+ ulong vcrc;
+ int verify;
+ int ac;
+ char **av;
+
+ if (argc < 3) {
+ usage:
+ printf ("Usage:\n%s\n", cmdtp->usage);
+ return 1;
+ }
+
+ av = argv + 1;
+ ac = argc - 1;
+ if (strcmp(*av, "-v") == 0) {
+ verify = 1;
+ av++;
+ ac--;
+ if (ac < 3)
+ goto usage;
+ } else
+ verify = 0;
+
+ addr = simple_strtoul(*av++, NULL, 16);
+ addr += base_address;
+ length = simple_strtoul(*av++, NULL, 16);
+
+ crc = crc32(0, (const uchar *) addr, length);
+
+ if (!verify) {
+ printf ("CRC32 for %08lx ... %08lx ==> %08lx\n",
+ addr, addr + length - 1, crc);
+ if (ac > 2) {
+ ptr = (ulong *) simple_strtoul (*av++, NULL, 16);
+ *ptr = crc;
+ }
+ } else {
+ vcrc = simple_strtoul(*av++, NULL, 16);
+ if (vcrc != crc) {
+ printf ("CRC32 for %08lx ... %08lx ==> %08lx != %08lx ** ERROR **\n",
+ addr, addr + length - 1, crc, vcrc);
+ return 1;
+ }
+ }
+
+ return 0;
+
+}
+#endif /* CONFIG_CRC32_VERIFY */
+
+/**************************************************/
+#if defined(CONFIG_CMD_MEMORY)
+U_BOOT_CMD(
+ md, 3, 1, do_mem_md,
+ "md - memory display\n",
+ "[.b, .w, .l] address [# of objects]\n - memory display\n"
+);
+
+
+U_BOOT_CMD(
+ mm, 2, 1, do_mem_mm,
+ "mm - memory modify (auto-incrementing)\n",
+ "[.b, .w, .l] address\n" " - memory modify, auto increment address\n"
+);
+
+
+U_BOOT_CMD(
+ nm, 2, 1, do_mem_nm,
+ "nm - memory modify (constant address)\n",
+ "[.b, .w, .l] address\n - memory modify, read and keep address\n"
+);
+
+U_BOOT_CMD(
+ mw, 4, 1, do_mem_mw,
+ "mw - memory write (fill)\n",
+ "[.b, .w, .l] address value [count]\n - write memory\n"
+);
+
+U_BOOT_CMD(
+ cp, 4, 1, do_mem_cp,
+ "cp - memory copy\n",
+ "[.b, .w, .l] source target count\n - copy memory\n"
+);
+
+U_BOOT_CMD(
+ cmp, 4, 1, do_mem_cmp,
+ "cmp - memory compare\n",
+ "[.b, .w, .l] addr1 addr2 count\n - compare memory\n"
+);
+
+#ifndef CONFIG_CRC32_VERIFY
+
+U_BOOT_CMD(
+ crc32, 4, 1, do_mem_crc,
+ "crc32 - checksum calculation\n",
+ "address count [addr]\n - compute CRC32 checksum [save at addr]\n"
+);
+
+#else /* CONFIG_CRC32_VERIFY */
+
+U_BOOT_CMD(
+ crc32, 5, 1, do_mem_crc,
+ "crc32 - checksum calculation\n",
+ "address count [addr]\n - compute CRC32 checksum [save at addr]\n"
+ "-v address count crc\n - verify crc of memory area\n"
+);
+
+#endif /* CONFIG_CRC32_VERIFY */
+
+U_BOOT_CMD(
+ base, 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"
+);
+
+U_BOOT_CMD(
+ loop, 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"
+);
+
+#ifdef CONFIG_LOOPW
+U_BOOT_CMD(
+ loopw, 4, 1, do_mem_loopw,
+ "loopw - infinite write loop on address range\n",
+ "[.b, .w, .l] address number_of_objects data_to_write\n"
+ " - loop on a set of addresses\n"
+);
+#endif /* CONFIG_LOOPW */
+
+U_BOOT_CMD(
+ mtest, 4, 1, do_mem_mtest,
+ "mtest - simple RAM test\n",
+ "[start [end [pattern]]]\n"
+ " - simple RAM read/write test\n"
+);
+
+#ifdef CONFIG_MX_CYCLIC
+U_BOOT_CMD(
+ mdc, 4, 1, do_mem_mdc,
+ "mdc - memory display cyclic\n",
+ "[.b, .w, .l] address count delay(ms)\n - memory display cyclic\n"
+);
+
+U_BOOT_CMD(
+ mwc, 4, 1, do_mem_mwc,
+ "mwc - memory write cyclic\n",
+ "[.b, .w, .l] address value delay(ms)\n - memory write cyclic\n"
+);
+#endif /* CONFIG_MX_CYCLIC */
+
+#endif
+#endif