#endif
#include "target.h"
+#include "target_type.h"
#include "target_request.h"
#include "time_support.h"
#include "register.h"
return ERROR_OK;
}
+int target_examine_one(struct target_s *target)
+{
+ return target->type->examine(target);
+}
+
/* Targets that correctly implement init+examine, i.e.
* no communication with target during init:
*
target_t *target = all_targets;
while (target)
{
- if ((retval = target->type->examine(target))!=ERROR_OK)
+ if ((retval = target_examine_one(target)) != ERROR_OK)
return retval;
target = target->next;
}
return retval;
}
+const char *target_get_name(struct target_s *target)
+{
+ return target->type->name;
+}
static int target_write_memory_imp(struct target_s *target, u32 address, u32 size, u32 count, u8 *buffer)
{
{
return target->type->write_memory(target, address, size, count, buffer);
}
+int target_bulk_write_memory(struct target_s *target,
+ u32 address, u32 count, u8 *buffer)
+{
+ return target->type->bulk_write_memory(target, address, count, buffer);
+}
+
+int target_add_breakpoint(struct target_s *target,
+ struct breakpoint_s *breakpoint)
+{
+ return target->type->add_breakpoint(target, breakpoint);
+}
+int target_remove_breakpoint(struct target_s *target,
+ struct breakpoint_s *breakpoint)
+{
+ return target->type->remove_breakpoint(target, breakpoint);
+}
+
+int target_add_watchpoint(struct target_s *target,
+ struct watchpoint_s *watchpoint)
+{
+ return target->type->add_watchpoint(target, watchpoint);
+}
+int target_remove_watchpoint(struct target_s *target,
+ struct watchpoint_s *watchpoint)
+{
+ return target->type->remove_watchpoint(target, watchpoint);
+}
+
+int target_get_gdb_reg_list(struct target_s *target,
+ struct reg_s **reg_list[], int *reg_list_size)
+{
+ return target->type->get_gdb_reg_list(target, reg_list, reg_list_size);
+}
+int target_step(struct target_s *target,
+ int current, u32 address, int handle_breakpoints)
+{
+ return target->type->step(target, current, address, handle_breakpoints);
+}
+
int target_run_algorithm(struct target_s *target,
int num_mem_params, mem_param_t *mem_params,
if ((retval = target->type->init_target(cmd_ctx, target)) != ERROR_OK)
{
- LOG_ERROR("target '%s' init failed", target->type->name);
+ LOG_ERROR("target '%s' init failed", target_get_name(target));
return retval;
}
command_print(cmd_ctx, "%2d: %-10s %-10s %-10s %10d %14s %s",
target->target_number,
target->cmd_name,
- target->type->name,
+ target_get_name(target),
Jim_Nvp_value2name_simple( nvp_target_endian, target->endianness )->name,
target->tap->abs_chain_position,
target->tap->dotted_name,
"0x%8.8x: ", address + (i*size));
}
- u32 value;
+ u32 value=0;
const u8 *value_ptr = buffer + i * size;
switch (size) {
case 4: value = target_buffer_get_u32(target, value_ptr); break;
LOG_DEBUG( "target: (%d) %s (%s) event: %d (%s) action: %s\n",
target->target_number,
target->cmd_name,
- target->type->name,
+ target_get_name(target),
e,
Jim_Nvp_value2name_simple( nvp_target_event, e )->name,
Jim_GetString( teap->body, NULL ) );
return JIM_ERR;
}
}
- Jim_SetResultString( goi->interp, target->type->name, -1 );
+ Jim_SetResultString( goi->interp, target_get_name(target), -1 );
/* loop for more */
break;
case TCFG_EVENT: