From 2e7d51c96a80f7fb2135af8558886e6516ddf661 Mon Sep 17 00:00:00 2001 From: Mike Dunn Date: Thu, 2 Dec 2010 11:08:28 -0800 Subject: 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 --- src/target/xscale.h | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'src/target/xscale.h') 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) */ }; -- cgit v1.2.3