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>
This commit is contained in:
@@ -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) */
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user