ETM cleanup

Various cleanups of ETM related code.

 - Saner error return paths
 - Simplify arm7_9 init ... no need for extra zeroing!
 - Shrink some lines
 - Tweak some diagnostics
 - Use shorter name for ETM struct type.
 - Don't exit()

and similar.  The diagnostics look forward to having
this ETM code work with more than just ARM7/ARM9.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
This commit is contained in:
David Brownell
2009-11-11 04:42:50 -08:00
parent 583a293a32
commit d796ce0e4d
4 changed files with 120 additions and 131 deletions

View File

@@ -3098,50 +3098,25 @@ int arm7_9_init_arch_info(target_t *target, arm7_9_common_t *arm7_9)
arm7_9->common_magic = ARM7_9_COMMON_MAGIC;
if ((retval = arm_jtag_setup_connection(&arm7_9->jtag_info)) != ERROR_OK)
{
return retval;
}
arm7_9->wp_available = 0; /* this is set up in arm7_9_clear_watchpoints() */
/* caller must have allocated via calloc(), so everything's zeroed */
arm7_9->wp_available_max = 2;
arm7_9->sw_breakpoints_added = 0;
arm7_9->sw_breakpoint_count = 0;
arm7_9->breakpoint_count = 0;
arm7_9->wp0_used = 0;
arm7_9->wp1_used = 0;
arm7_9->wp1_used_default = 0;
arm7_9->use_dbgrq = 0;
arm7_9->etm_ctx = NULL;
arm7_9->has_single_step = 0;
arm7_9->has_monitor_mode = 0;
arm7_9->has_vector_catch = 0;
arm7_9->debug_entry_from_reset = 0;
arm7_9->dcc_working_area = NULL;
arm7_9->fast_memory_access = fast_and_dangerous;
arm7_9->dcc_downloads = fast_and_dangerous;
arm7_9->need_bypass_before_restart = 0;
armv4_5->arch_info = arm7_9;
armv4_5->read_core_reg = arm7_9_read_core_reg;
armv4_5->write_core_reg = arm7_9_write_core_reg;
armv4_5->full_context = arm7_9_full_context;
if ((retval = armv4_5_init_arch_info(target, armv4_5)) != ERROR_OK)
{
return retval;
}
if ((retval = target_register_timer_callback(arm7_9_handle_target_request, 1, 1, target)) != ERROR_OK)
{
return retval;
}
return ERROR_OK;
return target_register_timer_callback(arm7_9_handle_target_request,
1, 1, target);
}
int arm7_9_register_commands(struct command_context_s *cmd_ctx)

View File

@@ -20,8 +20,6 @@
#ifndef ETB_H
#define ETB_H
#include "etm.h"
/* ETB registers */
enum
{

File diff suppressed because it is too large Load Diff

View File

@@ -115,17 +115,17 @@ typedef enum
} etmv1_tracemode_t;
/* forward-declare ETM context */
struct etm_context_s;
struct etm;
typedef struct etm_capture_driver_s
{
char *name;
int (*register_commands)(struct command_context_s *cmd_ctx);
int (*init)(struct etm_context_s *etm_ctx);
trace_status_t (*status)(struct etm_context_s *etm_ctx);
int (*read_trace)(struct etm_context_s *etm_ctx);
int (*start_capture)(struct etm_context_s *etm_ctx);
int (*stop_capture)(struct etm_context_s *etm_ctx);
int (*init)(struct etm *etm_ctx);
trace_status_t (*status)(struct etm *etm_ctx);
int (*read_trace)(struct etm *etm_ctx);
int (*start_capture)(struct etm *etm_ctx);
int (*stop_capture)(struct etm *etm_ctx);
} etm_capture_driver_t;
enum
@@ -146,7 +146,7 @@ typedef struct etmv1_trace_data_s
* this will have to be split into version independent elements
* and a version specific part
*/
typedef struct etm_context_s
typedef struct etm
{
target_t *target; /* target this ETM is connected to */
reg_cache_t *reg_cache; /* ETM register cache */