summaryrefslogtreecommitdiff
path: root/src/target/xscale.h
diff options
context:
space:
mode:
authorMike Dunn <mikedunn@newsguy.com>2010-12-02 11:08:28 -0800
committerØyvind Harboe <oyvind.harboe@zylin.com>2010-12-04 09:40:15 +0100
commit2e7d51c96a80f7fb2135af8558886e6516ddf661 (patch)
tree7130ef79698c8f8b9c9a928f1d54bab2aa20abfe /src/target/xscale.h
parent81790fb56a6db1e5cd9af2b6889071d1dc975052 (diff)
downloadopenocd+libswd-2e7d51c96a80f7fb2135af8558886e6516ddf661.tar.gz
openocd+libswd-2e7d51c96a80f7fb2135af8558886e6516ddf661.tar.bz2
openocd+libswd-2e7d51c96a80f7fb2135af8558886e6516ddf661.tar.xz
openocd+libswd-2e7d51c96a80f7fb2135af8558886e6516ddf661.zip
xscale: trace buffer remains enabled until explicitly disabled
Hi everyone, Since a call went out for patches... been sitting on this for months. For some reason, the xscale trace buffer is automatically disabled as soon as a break occurs and the trace data is collected. This patch was a result of the frustration of always re-enabling it, or else hitting a breakpoint and checking the trace data, only to discover that I forgot to re-enable it before resuming. Don't see why it should work this way. There is no run-time penalty, AFAIK. Along the way, I also cleaned up a little by removing the ugly practice of recording wrap mode by setting the fill count variable to "-1", replacing it with an enum that records the trace mode. I've been using this for months. Comments, criticisms gratefully received. Mike Signed-off-by: Mike Dunn <mikedunn@newsguy.com>
Diffstat (limited to 'src/target/xscale.h')
-rw-r--r--src/target/xscale.h13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/target/xscale.h b/src/target/xscale.h
index d429336e..e480da93 100644
--- a/src/target/xscale.h
+++ b/src/target/xscale.h
@@ -71,13 +71,20 @@ struct xscale_trace_data
struct xscale_trace_data *next;
};
+enum trace_mode
+{
+ XSCALE_TRACE_DISABLED,
+ XSCALE_TRACE_FILL,
+ XSCALE_TRACE_WRAP
+};
+
struct xscale_trace
{
- trace_status_t capture_status; /* current state of capture run */
struct image *image; /* source for target opcodes */
struct xscale_trace_data *data; /* linked list of collected trace data */
- int buffer_enabled; /* whether trace buffer is enabled */
- int buffer_fill; /* maximum number of trace runs to read (-1 for wrap-around) */
+ int buffer_fill; /* maximum number of trace runs to read */
+ int fill_counter; /* running count during trace collection */
+ enum trace_mode mode;
enum arm_state core_state; /* current core state (ARM, Thumb) */
};