summaryrefslogtreecommitdiff
path: root/src/target/etm.h
diff options
context:
space:
mode:
authordbrownell <dbrownell@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2009-09-23 07:49:38 +0000
committerdbrownell <dbrownell@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2009-09-23 07:49:38 +0000
commita6d858ebcdad1cb1284a4168f2884ed524ee6f21 (patch)
tree49e0e1d51abfecca0fba1f3069c0a3db60085cec /src/target/etm.h
parent7393fcfc900b720271ab048a0e0b441897a97a37 (diff)
downloadopenocd+libswd-a6d858ebcdad1cb1284a4168f2884ed524ee6f21.tar.gz
openocd+libswd-a6d858ebcdad1cb1284a4168f2884ed524ee6f21.tar.bz2
openocd+libswd-a6d858ebcdad1cb1284a4168f2884ed524ee6f21.tar.xz
openocd+libswd-a6d858ebcdad1cb1284a4168f2884ed524ee6f21.zip
Initial ETM cleanups. Most of these are cosmetic:
- Add a header comment - Line up the ETM context struct, pack it a bit - Remove unused context_id (this doesn't support ETMv2 yet) - Make most functions static - Remove unused string table and other needless lines of code - Correct "tracemode" helptext Also provide and use an etm_reg_lookup() to find entries in the ETM register cache. This will help cope with corrected contents of that cache, which doesn't include entires for non-existent registers. git-svn-id: svn://svn.berlios.de/openocd/trunk@2750 b42882b7-edfa-0310-969c-e2dbd0fdcd60
Diffstat (limited to 'src/target/etm.h')
-rw-r--r--src/target/etm.h49
1 files changed, 19 insertions, 30 deletions
diff --git a/src/target/etm.h b/src/target/etm.h
index 14dda4fc..43ec048f 100644
--- a/src/target/etm.h
+++ b/src/target/etm.h
@@ -139,29 +139,28 @@ typedef struct etmv1_trace_data_s
*/
typedef struct etm_context_s
{
- target_t *target; /* target this ETM is connected to */
- reg_cache_t *reg_cache; /* ETM register cache */
+ target_t *target; /* target this ETM is connected to */
+ reg_cache_t *reg_cache; /* ETM register cache */
etm_capture_driver_t *capture_driver; /* driver used to access ETM data */
- void *capture_driver_priv; /* capture driver private data */
- uint32_t trigger_percent; /* percent of trace buffer to be filled after the trigger */
+ void *capture_driver_priv; /* capture driver private data */
+ uint32_t trigger_percent; /* how much trace buffer to fill after trigger */
trace_status_t capture_status; /* current state of capture run */
etmv1_trace_data_t *trace_data; /* trace data */
- uint32_t trace_depth; /* number of trace cycles to be analyzed, 0 if no trace data available */
- etm_portmode_t portmode; /* normal, multiplexed or demultiplexed */
- etmv1_tracemode_t tracemode; /* type of information the trace contains (data, addres, contextID, ...) */
- armv4_5_state_t core_state; /* current core state (ARM, Thumb, Jazelle) */
- struct image_s *image; /* source for target opcodes */
- uint32_t pipe_index; /* current trace cycle */
- uint32_t data_index; /* cycle holding next data packet */
- int data_half; /* port half on a 16 bit port */
- uint32_t current_pc; /* current program counter */
- uint32_t pc_ok; /* full PC has been acquired */
- uint32_t last_branch; /* last branch address output */
- uint32_t last_branch_reason; /* branch reason code for the last branch encountered */
- uint32_t last_ptr; /* address of the last data access */
- uint32_t ptr_ok; /* whether last_ptr is valid */
- uint32_t context_id; /* context ID of the code being traced */
- uint32_t last_instruction; /* index of last instruction executed (to calculate cycle timings) */
+ uint32_t trace_depth; /* number of cycles to be analyzed, 0 if no data available */
+ etm_portmode_t portmode; /* normal, multiplexed or demultiplexed */
+ etmv1_tracemode_t tracemode; /* type of info trace contains */
+ armv4_5_state_t core_state; /* current core state */
+ struct image_s *image; /* source for target opcodes */
+ uint32_t pipe_index; /* current trace cycle */
+ uint32_t data_index; /* cycle holding next data packet */
+ bool data_half; /* port half on a 16 bit port */
+ bool pc_ok; /* full PC has been acquired */
+ bool ptr_ok; /* whether last_ptr is valid */
+ uint32_t current_pc; /* current program counter */
+ uint32_t last_branch; /* last branch address output */
+ uint32_t last_branch_reason; /* type of last branch encountered */
+ uint32_t last_ptr; /* address of the last data access */
+ uint32_t last_instruction; /* index of last executed (to calc timings) */
} etm_context_t;
/* PIPESTAT values */
@@ -190,20 +189,10 @@ typedef enum
BR_RSVD7 = 0x7, /* reserved */
} etmv1_branch_reason_t;
-extern char *etmv1v1_branch_reason_strings[];
-
extern reg_cache_t* etm_build_reg_cache(target_t *target, arm_jtag_t *jtag_info, etm_context_t *etm_ctx);
-extern int etm_read_reg(reg_t *reg);
-extern int etm_write_reg(reg_t *reg, uint32_t value);
-extern int etm_read_reg_w_check(reg_t *reg, uint8_t* check_value, uint8_t* check_mask);
-extern int etm_store_reg(reg_t *reg);
-extern int etm_set_reg(reg_t *reg, uint32_t value);
-extern int etm_set_reg_w_exec(reg_t *reg, uint8_t *buf);
extern int etm_setup(target_t *target);
int etm_register_commands(struct command_context_s *cmd_ctx);
-int etm_register_user_commands(struct command_context_s *cmd_ctx);
-extern etm_context_t* etm_create_context(etm_portmode_t portmode, char *capture_driver_name);
#define ERROR_ETM_INVALID_DRIVER (-1300)
#define ERROR_ETM_PORTMODE_NOT_SUPPORTED (-1301)