target/espressif: add semihosting support
[fw/openocd] / src / target / trace.h
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2
3 /***************************************************************************
4  *   Copyright (C) 2007 by Dominic Rath                                    *
5  *   Dominic.Rath@gmx.de                                                   *
6  ***************************************************************************/
7
8 #ifndef OPENOCD_TARGET_TRACE_H
9 #define OPENOCD_TARGET_TRACE_H
10
11 #include "helper/types.h"
12
13 struct target;
14 struct command_context;
15
16 struct trace_point {
17         uint32_t address;
18         uint64_t hit_counter;
19 };
20
21 struct trace {
22         uint32_t num_trace_points;
23         uint32_t trace_points_size;
24         struct trace_point *trace_points;
25         uint32_t trace_history_size;
26         uint32_t *trace_history;
27         uint32_t trace_history_pos;
28         int trace_history_overflowed;
29 };
30
31 /**
32  * \todo This enum is one of the few things in this file related
33  * to *hardware* tracing ... split such "real" tracing out from
34  * the contrib/libdcc support.
35  */
36 typedef enum trace_status {
37         TRACE_IDLE = 0x0,
38         TRACE_RUNNING = 0x1,
39         TRACE_TRIGGERED = 0x2,
40         TRACE_COMPLETED = 0x4,
41         TRACE_OVERFLOWED = 0x8,
42 } trace_status_t;
43
44 int trace_point(struct target *target, uint32_t number);
45 int trace_register_commands(struct command_context *cmd_ctx);
46
47 #define ERROR_TRACE_IMAGE_UNAVAILABLE           (-1500)
48 #define ERROR_TRACE_INSTRUCTION_UNAVAILABLE     (-1501)
49
50 #endif /* OPENOCD_TARGET_TRACE_H */