-#ifdef CONFIG_HAS_DATAFLASH
- /* Check if we are copying from RAM or Flash to DataFlash */
- if (addr_dataflash(dest) && !addr_dataflash(addr)){
- int rc;
-
- puts ("Copy to DataFlash... ");
-
- rc = write_dataflash (dest, addr, count*size);
-
- if (rc != 1) {
- dataflash_perror (rc);
- return (1);
- }
- puts ("done\n");
- return 0;
- }
-
- /* Check if we are copying from DataFlash to RAM */
- if (addr_dataflash(addr) && !addr_dataflash(dest)
-#ifndef CONFIG_SYS_NO_FLASH
- && (addr2info(dest) == NULL)
-#endif
- ){
- int rc;
- rc = read_dataflash(addr, count * size, (char *) dest);
- if (rc != 1) {
- dataflash_perror (rc);
- return (1);
- }
- return 0;
- }
-
- if (addr_dataflash(addr) && addr_dataflash(dest)){
- puts ("Unsupported combination of source/destination.\n\r");
- return 1;
- }
-#endif
-
-#ifdef CONFIG_BLACKFIN
- /* See if we're copying to/from L1 inst */
- if (addr_bfin_on_chip_mem(dest) || addr_bfin_on_chip_mem(addr)) {
- memcpy((void *)dest, (void *)addr, count * size);
- return 0;
- }
-#endif
-
- bytes = size * count;
- buf = map_sysmem(dest, bytes);
- src = map_sysmem(addr, bytes);
- while (count-- > 0) {
- if (size == 4)
- *((u32 *)buf) = *((u32 *)src);
-#ifdef CONFIG_SYS_SUPPORT_64BIT_DATA
- else if (size == 8)
- *((u64 *)buf) = *((u64 *)src);
-#endif
- else if (size == 2)
- *((u16 *)buf) = *((u16 *)src);
- else
- *((u8 *)buf) = *((u8 *)src);
- src += size;
- buf += size;
-
- /* reset watchdog from time to time */
- if ((count % (64 << 10)) == 0)
- WATCHDOG_RESET();
- }
- unmap_sysmem(buf);
- unmap_sysmem(src);