summaryrefslogtreecommitdiff
path: root/src/target/mips_m4k.c
diff options
context:
space:
mode:
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2008-10-08 05:09:59 +0000
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2008-10-08 05:09:59 +0000
commit76be215ee1271adb4a9ed04ee8b102c28e825798 (patch)
tree4d966f5b331c5286acd9aa6e3d241febbc4a89b4 /src/target/mips_m4k.c
parenteadd49bef0960e015de084a41571c32e2ffbff41 (diff)
downloadopenocd_libswd-76be215ee1271adb4a9ed04ee8b102c28e825798.tar.gz
openocd_libswd-76be215ee1271adb4a9ed04ee8b102c28e825798.tar.bz2
openocd_libswd-76be215ee1271adb4a9ed04ee8b102c28e825798.tar.xz
openocd_libswd-76be215ee1271adb4a9ed04ee8b102c28e825798.zip
John McCarthy <jgmcc@magma.ca> adds support for DMA mode access as supported by EJTAG 1.0/2.0 processors
git-svn-id: svn://svn.berlios.de/openocd/trunk@1029 b42882b7-edfa-0310-969c-e2dbd0fdcd60
Diffstat (limited to 'src/target/mips_m4k.c')
-rw-r--r--src/target/mips_m4k.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/target/mips_m4k.c b/src/target/mips_m4k.c
index 0db7a94b..03995b5e 100644
--- a/src/target/mips_m4k.c
+++ b/src/target/mips_m4k.c
@@ -512,7 +512,11 @@ int mips_m4k_read_memory(struct target_s *target, u32 address, u32 size, u32 cou
case 4:
case 2:
case 1:
- return mips32_pracc_read_mem(ejtag_info, address, size, count, (void *)buffer);
+ /* if noDMA off, use DMAACC mode for memory read */
+ if(ejtag_info->impcode & (1<<14))
+ return mips32_pracc_read_mem(ejtag_info, address, size, count, (void *)buffer);
+ else
+ return mips32_dmaacc_read_mem(ejtag_info, address, size, count, (void *)buffer);
default:
LOG_ERROR("BUG: we shouldn't get here");
exit(-1);
@@ -547,7 +551,11 @@ int mips_m4k_write_memory(struct target_s *target, u32 address, u32 size, u32 co
case 4:
case 2:
case 1:
- mips32_pracc_write_mem(ejtag_info, address, size, count, (void *)buffer);
+ /* if noDMA off, use DMAACC mode for memory write */
+ if(ejtag_info->impcode & (1<<14))
+ mips32_pracc_write_mem(ejtag_info, address, size, count, (void *)buffer);
+ else
+ mips32_dmaacc_write_mem(ejtag_info, address, size, count, (void *)buffer);
break;
default:
LOG_ERROR("BUG: we shouldn't get here");