diff options
author | Mike 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 |
commit | 2e7d51c96a80f7fb2135af8558886e6516ddf661 (patch) | |
tree | 7130ef79698c8f8b9c9a928f1d54bab2aa20abfe /src/target/xscale.h | |
parent | 81790fb56a6db1e5cd9af2b6889071d1dc975052 (diff) |
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.h | 13 |
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) */ }; |