aboutsummaryrefslogtreecommitdiff
path: root/src/target/arm926ejs.h
diff options
context:
space:
mode:
authorAndreas Fritiofson <andreas.fritiofson@gmail.com>2013-10-05 00:19:08 +0200
committerSpencer Oliver <spen@spen-soft.co.uk>2013-10-15 20:41:08 +0000
commitff5ec942d80a34e20b5a3ca3328f7e6a55fb309b (patch)
tree1d5682ae57f84d16f136b27ee75a6158790fca3f /src/target/arm926ejs.h
parent8e6e7948de11e69fa53e7b7f306d35d6d4904b14 (diff)
downloadriscv-openocd-ff5ec942d80a34e20b5a3ca3328f7e6a55fb309b.zip
riscv-openocd-ff5ec942d80a34e20b5a3ca3328f7e6a55fb309b.tar.gz
riscv-openocd-ff5ec942d80a34e20b5a3ca3328f7e6a55fb309b.tar.bz2
arm7_9: Avoid infinite loops in bulk write dispatching
Add a mandatory field in struct arm7_9_common for regular, non-optimized memory writes. Together with the existing bulk_memory_write field, this allows variants to select any combination of implementations for regular and bulk writes, without risking infinite loops from accidentally using bulk writes for implementing bulk writes. ARM 7/9 targets may now select arm7_9_memory_write_opt as their target.write_memory implementation, which will dispatch to arm7_9_common.bulk_write_memory if possible, or fallback to arm7_9_common.write_memory otherwise. To avoid loops, bulk write implementations mustn't call any other functions than arm7_9_write_memory_no_opt() to write memory; it will unconditionally call arm7_9_common.write_memory. If they fail, they should simply return error to allow the caller to fallback to regular writes. Tested on a regular ARM7TDMI only. Change-Id: Iae42a6e093e2df68c4823c927d757ae8f42ef388 Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com> Reviewed-on: http://openocd.zylin.com/1685 Tested-by: jenkins Reviewed-by: Sergey A. Borshch <sb-sf@users.sourceforge.net> Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
Diffstat (limited to 'src/target/arm926ejs.h')
-rw-r--r--src/target/arm926ejs.h2
1 files changed, 0 insertions, 2 deletions
diff --git a/src/target/arm926ejs.h b/src/target/arm926ejs.h
index 6dde4c6..cc19c9f 100644
--- a/src/target/arm926ejs.h
+++ b/src/target/arm926ejs.h
@@ -50,8 +50,6 @@ int arm926ejs_init_arch_info(struct target *target,
int arm926ejs_arch_state(struct target *target);
int arm926ejs_write_memory(struct target *target,
uint32_t address, uint32_t size, uint32_t count, const uint8_t *buffer);
-int arm926ejs_write_memory_opt(struct target *target,
- uint32_t address, uint32_t size, uint32_t count, const uint8_t *buffer);
int arm926ejs_soft_reset_halt(struct target *target);
extern const struct command_registration arm926ejs_command_handlers[];