diff options
author | David Brownell <dbrownell@users.sourceforge.net> | 2009-11-28 10:40:26 -0800 |
---|---|---|
committer | David Brownell <dbrownell@users.sourceforge.net> | 2009-11-28 10:40:26 -0800 |
commit | acbe054a38a45432f5948026e1e9258b4e2910c2 (patch) | |
tree | 126e4c5fbe6d3d8261e994171f7f45855bf59a16 /src/target/xscale.c | |
parent | 68889ea02f28bfd61f0b4b85aad4b0bf8826a947 (diff) | |
download | riscv-openocd-acbe054a38a45432f5948026e1e9258b4e2910c2.zip riscv-openocd-acbe054a38a45432f5948026e1e9258b4e2910c2.tar.gz riscv-openocd-acbe054a38a45432f5948026e1e9258b4e2910c2.tar.bz2 |
target: uplevel add_{break,watch}point() error checks
In target_type.h it's documented that the target must be
halted for add_breakpoint() ... and with slight ambiguity,
also for its add_watchpoint() sibling. So rather than
verifying that constraint in the CPU drivers, do it in the
target_add_{break,watch}point() routines.
Add minor paranoia on the remove_*point() paths too: save
the return value, and print it out in in the LOG_DEBUG message
in case it's nonzero.
Note that with some current cores, like all ARMv7 ones I've
looked at, there's no technical issue preventing watchpoint or
breakpoint add/remove operations on active cores. This model
seems deeply wired into OpenOCD though.
ALSO: the ARM targets were fairly "good" about enforcing that
constraint themselves. The MIPS ones were relied on other code
to catch such stuff, but it's not clear such code existed ...
keep an eye out for new issues on MIPS.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Diffstat (limited to 'src/target/xscale.c')
-rw-r--r-- | src/target/xscale.c | 12 |
1 files changed, 0 insertions, 12 deletions
diff --git a/src/target/xscale.c b/src/target/xscale.c index 1a18ab8..49653a9 100644 --- a/src/target/xscale.c +++ b/src/target/xscale.c @@ -2137,12 +2137,6 @@ static int xscale_add_breakpoint(struct target *target, { struct xscale_common *xscale = target_to_xscale(target); - if (target->state != TARGET_HALTED) - { - LOG_WARNING("target not halted"); - return ERROR_TARGET_NOT_HALTED; - } - if ((breakpoint->type == BKPT_HARD) && (xscale->ibcr_available < 1)) { LOG_INFO("no breakpoint unit available for hardware breakpoint"); @@ -2300,12 +2294,6 @@ static int xscale_add_watchpoint(struct target *target, { struct xscale_common *xscale = target_to_xscale(target); - if (target->state != TARGET_HALTED) - { - LOG_WARNING("target not halted"); - return ERROR_TARGET_NOT_HALTED; - } - if (xscale->dbr_available < 1) { return ERROR_TARGET_RESOURCE_NOT_AVAILABLE; |