X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Ftarget%2Ftarget.c;h=d672649281add2bf6a737b3fa553cda9ffb17833;hb=733dfb288fadefee93e61bb61a39171d210a93aa;hp=3bb2fa360ec1fc8e0c5eb8a487ee7c9e155f16b9;hpb=4b992717b54165368e61eeb9971340f84011f758;p=openocd.git diff --git a/src/target/target.c b/src/target/target.c index 3bb2fa360e..d672649281 100644 --- a/src/target/target.c +++ b/src/target/target.c @@ -34,6 +34,7 @@ #endif #include "target.h" +#include "target_type.h" #include "target_request.h" #include "time_support.h" #include "register.h" @@ -41,8 +42,6 @@ #include "image.h" #include "jtag.h" -#include - static int handle_targets_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); @@ -150,7 +149,7 @@ const char *target_strerror_safe( int err ) } } -const Jim_Nvp nvp_target_event[] = { +static const Jim_Nvp nvp_target_event[] = { { .value = TARGET_EVENT_OLD_gdb_program_config , .name = "old-gdb_program_config" }, { .value = TARGET_EVENT_OLD_pre_resume , .name = "old-pre_resume" }, @@ -273,7 +272,7 @@ static int new_target_number(void) static int target_continous_poll = 1; /* read a u32 from a buffer in target memory endianness */ -u32 target_buffer_get_u32(target_t *target, u8 *buffer) +u32 target_buffer_get_u32(target_t *target, const u8 *buffer) { if (target->endianness == TARGET_LITTLE_ENDIAN) return le_to_h_u32(buffer); @@ -282,7 +281,7 @@ u32 target_buffer_get_u32(target_t *target, u8 *buffer) } /* read a u16 from a buffer in target memory endianness */ -u16 target_buffer_get_u16(target_t *target, u8 *buffer) +u16 target_buffer_get_u16(target_t *target, const u8 *buffer) { if (target->endianness == TARGET_LITTLE_ENDIAN) return le_to_h_u16(buffer); @@ -291,7 +290,7 @@ u16 target_buffer_get_u16(target_t *target, u8 *buffer) } /* read a u8 from a buffer in target memory endianness */ -u8 target_buffer_get_u8(target_t *target, u8 *buffer) +u8 target_buffer_get_u8(target_t *target, const u8 *buffer) { return *buffer & 0x0ff; } @@ -384,7 +383,7 @@ target_t* get_current_target(command_context_t *cmd_ctx) int target_poll(struct target_s *target) { /* We can't poll until after examine */ - if (!target->type->examined) + if (!target_was_examined(target)) { /* Fail silently lest we pollute the log */ return ERROR_FAIL; @@ -395,7 +394,7 @@ int target_poll(struct target_s *target) int target_halt(struct target_s *target) { /* We can't poll until after examine */ - if (!target->type->examined) + if (!target_was_examined(target)) { LOG_ERROR("Target not examined yet"); return ERROR_FAIL; @@ -408,7 +407,7 @@ int target_resume(struct target_s *target, int current, u32 address, int handle_ int retval; /* We can't poll until after examine */ - if (!target->type->examined) + if (!target_was_examined(target)) { LOG_ERROR("Target not examined yet"); return ERROR_FAIL; @@ -463,10 +462,15 @@ static int default_mmu(struct target_s *target, int *enabled) static int default_examine(struct target_s *target) { - target->type->examined = 1; + target_set_examined(target); 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: * @@ -478,16 +482,20 @@ int target_examine(void) 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) { - if (!target->type->examined) + if (!target_was_examined(target)) { LOG_ERROR("Target not examined yet"); return ERROR_FAIL; @@ -497,7 +505,7 @@ static int target_write_memory_imp(struct target_s *target, u32 address, u32 siz static int target_read_memory_imp(struct target_s *target, u32 address, u32 size, u32 count, u8 *buffer) { - if (!target->type->examined) + if (!target_was_examined(target)) { LOG_ERROR("Target not examined yet"); return ERROR_FAIL; @@ -507,7 +515,7 @@ static int target_read_memory_imp(struct target_s *target, u32 address, u32 size static int target_soft_reset_halt_imp(struct target_s *target) { - if (!target->type->examined) + if (!target_was_examined(target)) { LOG_ERROR("Target not examined yet"); return ERROR_FAIL; @@ -517,7 +525,7 @@ static int target_soft_reset_halt_imp(struct target_s *target) static int target_run_algorithm_imp(struct target_s *target, int num_mem_params, mem_param_t *mem_params, int num_reg_params, reg_param_t *reg_param, u32 entry_point, u32 exit_point, int timeout_ms, void *arch_info) { - if (!target->type->examined) + if (!target_was_examined(target)) { LOG_ERROR("Target not examined yet"); return ERROR_FAIL; @@ -525,6 +533,85 @@ static int target_run_algorithm_imp(struct target_s *target, int num_mem_params, return target->type->run_algorithm_imp(target, num_mem_params, mem_params, num_reg_params, reg_param, entry_point, exit_point, timeout_ms, arch_info); } +int target_read_memory(struct target_s *target, + u32 address, u32 size, u32 count, u8 *buffer) +{ + return target->type->read_memory(target, address, size, count, buffer); +} + +int target_write_memory(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, + int num_reg_params, reg_param_t *reg_param, + u32 entry_point, u32 exit_point, + int timeout_ms, void *arch_info) +{ + return target->type->run_algorithm(target, + num_mem_params, mem_params, num_reg_params, reg_param, + entry_point, exit_point, timeout_ms, arch_info); +} + +/// @returns @c true if the target has been examined. +bool target_was_examined(struct target_s *target) +{ + return target->type->examined; +} +/// Sets the @c examined flag for the given target. +void target_set_examined(struct target_s *target) +{ + target->type->examined = true; +} +// Reset the @c examined flag for the given target. +void target_reset_examined(struct target_s *target) +{ + target->type->examined = false; +} + + int target_init(struct command_context_s *cmd_ctx) { target_t *target = all_targets; @@ -532,7 +619,7 @@ int target_init(struct command_context_s *cmd_ctx) while (target) { - target->type->examined = 0; + target_reset_examined(target); if (target->type->examine == NULL) { target->type->examine = default_examine; @@ -540,7 +627,7 @@ int target_init(struct command_context_s *cmd_ctx) 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; } @@ -858,7 +945,7 @@ int target_alloc_working_area(struct target_s *target, u32 size, working_area_t { int retval; new_wa->backup = malloc(new_wa->size); - if((retval = target->type->read_memory(target, new_wa->address, 4, new_wa->size / 4, new_wa->backup)) != ERROR_OK) + if((retval = target_read_memory(target, new_wa->address, 4, new_wa->size / 4, new_wa->backup)) != ERROR_OK) { free(new_wa->backup); free(new_wa); @@ -892,7 +979,7 @@ int target_free_working_area_restore(struct target_s *target, working_area_t *ar if (restore&&target->backup_working_area) { int retval; - if((retval = target->type->write_memory(target, area->address, 4, area->size / 4, area->backup)) != ERROR_OK) + if((retval = target_write_memory(target, area->address, 4, area->size / 4, area->backup)) != ERROR_OK) return retval; } @@ -979,7 +1066,7 @@ int target_write_buffer(struct target_s *target, u32 address, u32 size, u8 *buff int retval; LOG_DEBUG("writing buffer of %i byte at 0x%8.8x", size, address); - if (!target->type->examined) + if (!target_was_examined(target)) { LOG_ERROR("Target not examined yet"); return ERROR_FAIL; @@ -998,7 +1085,7 @@ int target_write_buffer(struct target_s *target, u32 address, u32 size, u8 *buff if (((address % 2) == 0) && (size == 2)) { - return target->type->write_memory(target, address, 2, 1, buffer); + return target_write_memory(target, address, 2, 1, buffer); } /* handle unaligned head bytes */ @@ -1009,7 +1096,7 @@ int target_write_buffer(struct target_s *target, u32 address, u32 size, u8 *buff if (unaligned > size) unaligned = size; - if ((retval = target->type->write_memory(target, address, 1, unaligned, buffer)) != ERROR_OK) + if ((retval = target_write_memory(target, address, 1, unaligned, buffer)) != ERROR_OK) return retval; buffer += unaligned; @@ -1030,7 +1117,7 @@ int target_write_buffer(struct target_s *target, u32 address, u32 size, u8 *buff } else { - if ((retval = target->type->write_memory(target, address, 4, aligned / 4, buffer)) != ERROR_OK) + if ((retval = target_write_memory(target, address, 4, aligned / 4, buffer)) != ERROR_OK) return retval; } @@ -1042,7 +1129,7 @@ int target_write_buffer(struct target_s *target, u32 address, u32 size, u8 *buff /* handle tail writes of less than 4 bytes */ if (size > 0) { - if ((retval = target->type->write_memory(target, address, 1, size, buffer)) != ERROR_OK) + if ((retval = target_write_memory(target, address, 1, size, buffer)) != ERROR_OK) return retval; } @@ -1058,7 +1145,7 @@ int target_read_buffer(struct target_s *target, u32 address, u32 size, u8 *buffe int retval; LOG_DEBUG("reading buffer of %i byte at 0x%8.8x", size, address); - if (!target->type->examined) + if (!target_was_examined(target)) { LOG_ERROR("Target not examined yet"); return ERROR_FAIL; @@ -1077,7 +1164,7 @@ int target_read_buffer(struct target_s *target, u32 address, u32 size, u8 *buffe if (((address % 2) == 0) && (size == 2)) { - return target->type->read_memory(target, address, 2, 1, buffer); + return target_read_memory(target, address, 2, 1, buffer); } /* handle unaligned head bytes */ @@ -1088,7 +1175,7 @@ int target_read_buffer(struct target_s *target, u32 address, u32 size, u8 *buffe if (unaligned > size) unaligned = size; - if ((retval = target->type->read_memory(target, address, 1, unaligned, buffer)) != ERROR_OK) + if ((retval = target_read_memory(target, address, 1, unaligned, buffer)) != ERROR_OK) return retval; buffer += unaligned; @@ -1101,7 +1188,7 @@ int target_read_buffer(struct target_s *target, u32 address, u32 size, u8 *buffe { int aligned = size - (size % 4); - if ((retval = target->type->read_memory(target, address, 4, aligned / 4, buffer)) != ERROR_OK) + if ((retval = target_read_memory(target, address, 4, aligned / 4, buffer)) != ERROR_OK) return retval; buffer += aligned; @@ -1112,7 +1199,7 @@ int target_read_buffer(struct target_s *target, u32 address, u32 size, u8 *buffe /* handle tail writes of less than 4 bytes */ if (size > 0) { - if ((retval = target->type->read_memory(target, address, 1, size, buffer)) != ERROR_OK) + if ((retval = target_read_memory(target, address, 1, size, buffer)) != ERROR_OK) return retval; } @@ -1125,7 +1212,7 @@ int target_checksum_memory(struct target_s *target, u32 address, u32 size, u32* int retval; u32 i; u32 checksum = 0; - if (!target->type->examined) + if (!target_was_examined(target)) { LOG_ERROR("Target not examined yet"); return ERROR_FAIL; @@ -1167,7 +1254,7 @@ int target_checksum_memory(struct target_s *target, u32 address, u32 size, u32* int target_blank_check_memory(struct target_s *target, u32 address, u32 size, u32* blank) { int retval; - if (!target->type->examined) + if (!target_was_examined(target)) { LOG_ERROR("Target not examined yet"); return ERROR_FAIL; @@ -1184,13 +1271,13 @@ int target_blank_check_memory(struct target_s *target, u32 address, u32 size, u3 int target_read_u32(struct target_s *target, u32 address, u32 *value) { u8 value_buf[4]; - if (!target->type->examined) + if (!target_was_examined(target)) { LOG_ERROR("Target not examined yet"); return ERROR_FAIL; } - int retval = target->type->read_memory(target, address, 4, 1, value_buf); + int retval = target_read_memory(target, address, 4, 1, value_buf); if (retval == ERROR_OK) { @@ -1209,13 +1296,13 @@ int target_read_u32(struct target_s *target, u32 address, u32 *value) int target_read_u16(struct target_s *target, u32 address, u16 *value) { u8 value_buf[2]; - if (!target->type->examined) + if (!target_was_examined(target)) { LOG_ERROR("Target not examined yet"); return ERROR_FAIL; } - int retval = target->type->read_memory(target, address, 2, 1, value_buf); + int retval = target_read_memory(target, address, 2, 1, value_buf); if (retval == ERROR_OK) { @@ -1233,8 +1320,8 @@ int target_read_u16(struct target_s *target, u32 address, u16 *value) int target_read_u8(struct target_s *target, u32 address, u8 *value) { - int retval = target->type->read_memory(target, address, 1, 1, value); - if (!target->type->examined) + int retval = target_read_memory(target, address, 1, 1, value); + if (!target_was_examined(target)) { LOG_ERROR("Target not examined yet"); return ERROR_FAIL; @@ -1257,7 +1344,7 @@ int target_write_u32(struct target_s *target, u32 address, u32 value) { int retval; u8 value_buf[4]; - if (!target->type->examined) + if (!target_was_examined(target)) { LOG_ERROR("Target not examined yet"); return ERROR_FAIL; @@ -1266,7 +1353,7 @@ int target_write_u32(struct target_s *target, u32 address, u32 value) LOG_DEBUG("address: 0x%8.8x, value: 0x%8.8x", address, value); target_buffer_set_u32(target, value_buf, value); - if ((retval = target->type->write_memory(target, address, 4, 1, value_buf)) != ERROR_OK) + if ((retval = target_write_memory(target, address, 4, 1, value_buf)) != ERROR_OK) { LOG_DEBUG("failed: %i", retval); } @@ -1278,7 +1365,7 @@ int target_write_u16(struct target_s *target, u32 address, u16 value) { int retval; u8 value_buf[2]; - if (!target->type->examined) + if (!target_was_examined(target)) { LOG_ERROR("Target not examined yet"); return ERROR_FAIL; @@ -1287,7 +1374,7 @@ int target_write_u16(struct target_s *target, u32 address, u16 value) LOG_DEBUG("address: 0x%8.8x, value: 0x%8.8x", address, value); target_buffer_set_u16(target, value_buf, value); - if ((retval = target->type->write_memory(target, address, 2, 1, value_buf)) != ERROR_OK) + if ((retval = target_write_memory(target, address, 2, 1, value_buf)) != ERROR_OK) { LOG_DEBUG("failed: %i", retval); } @@ -1298,7 +1385,7 @@ int target_write_u16(struct target_s *target, u32 address, u16 value) int target_write_u8(struct target_s *target, u32 address, u8 value) { int retval; - if (!target->type->examined) + if (!target_was_examined(target)) { LOG_ERROR("Target not examined yet"); return ERROR_FAIL; @@ -1306,7 +1393,7 @@ int target_write_u8(struct target_s *target, u32 address, u8 value) LOG_DEBUG("address: 0x%8.8x, value: 0x%2.2x", address, value); - if ((retval = target->type->write_memory(target, address, 1, 1, &value)) != ERROR_OK) + if ((retval = target_write_memory(target, address, 1, 1, &value)) != ERROR_OK) { LOG_DEBUG("failed: %i", retval); } @@ -1393,7 +1480,7 @@ DumpTargets: 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, @@ -1844,77 +1931,80 @@ static int handle_step_command(struct command_context_s *cmd_ctx, char *cmd, cha return ERROR_OK; } -static int handle_md_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +static void handle_md_output(struct command_context_s *cmd_ctx, + struct target_s *target, u32 address, unsigned size, + unsigned count, const u8 *buffer) { - const int line_bytecnt = 32; - int count = 1; - int size = 4; - u32 address = 0; - int line_modulo; - int i; + const unsigned line_bytecnt = 32; + unsigned line_modulo = line_bytecnt / size; - char output[128]; - int output_len; + char output[line_bytecnt * 4 + 1]; + unsigned output_len = 0; - int retval; + const char *value_fmt; + switch (size) { + case 4: value_fmt = "%8.8x "; break; + case 2: value_fmt = "%4.2x "; break; + case 1: value_fmt = "%2.2x "; break; + default: + LOG_ERROR("invalid memory read size: %u", size); + exit(-1); + } - u8 *buffer; - target_t *target = get_current_target(cmd_ctx); + for (unsigned i = 0; i < count; i++) + { + if (i % line_modulo == 0) + { + output_len += snprintf(output + output_len, + sizeof(output) - output_len, + "0x%8.8x: ", address + (i*size)); + } - if (argc < 1) - return ERROR_OK; + u32 value=0; + const u8 *value_ptr = buffer + i * size; + switch (size) { + case 4: value = target_buffer_get_u32(target, value_ptr); break; + case 2: value = target_buffer_get_u16(target, value_ptr); break; + case 1: value = *value_ptr; + } + output_len += snprintf(output + output_len, + sizeof(output) - output_len, + value_fmt, value); - if (argc == 2) - count = strtoul(args[1], NULL, 0); + if ((i % line_modulo == line_modulo - 1) || (i == count - 1)) + { + command_print(cmd_ctx, "%s", output); + output_len = 0; + } + } +} - address = strtoul(args[0], NULL, 0); +static int handle_md_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +{ + if (argc < 1) + return ERROR_COMMAND_SYNTAX_ERROR; - switch (cmd[2]) - { - case 'w': - size = 4; line_modulo = line_bytecnt / 4; - break; - case 'h': - size = 2; line_modulo = line_bytecnt / 2; - break; - case 'b': - size = 1; line_modulo = line_bytecnt / 1; - break; - default: - return ERROR_OK; + unsigned size = 0; + switch (cmd[2]) { + case 'w': size = 4; break; + case 'h': size = 2; break; + case 'b': size = 1; break; + default: return ERROR_COMMAND_SYNTAX_ERROR; } - buffer = calloc(count, size); - retval = target->type->read_memory(target, address, size, count, buffer); - if (retval == ERROR_OK) - { - output_len = 0; + u32 address = strtoul(args[0], NULL, 0); - for (i = 0; i < count; i++) - { - if (i%line_modulo == 0) - output_len += snprintf(output + output_len, 128 - output_len, "0x%8.8x: ", address + (i*size)); + unsigned count = 1; + if (argc == 2) + count = strtoul(args[1], NULL, 0); - switch (size) - { - case 4: - output_len += snprintf(output + output_len, 128 - output_len, "%8.8x ", target_buffer_get_u32(target, &buffer[i*4])); - break; - case 2: - output_len += snprintf(output + output_len, 128 - output_len, "%4.4x ", target_buffer_get_u16(target, &buffer[i*2])); - break; - case 1: - output_len += snprintf(output + output_len, 128 - output_len, "%2.2x ", buffer[i*1]); - break; - } + u8 *buffer = calloc(count, size); - if ((i%line_modulo == line_modulo-1) || (i == count - 1)) - { - command_print(cmd_ctx, output); - output_len = 0; - } - } - } + target_t *target = get_current_target(cmd_ctx); + int retval = target_read_memory(target, + address, size, count, buffer); + if (ERROR_OK == retval) + handle_md_output(cmd_ctx, target, address, size, count, buffer); free(buffer); @@ -1958,27 +2048,11 @@ static int handle_mw_command(struct command_context_s *cmd_ctx, char *cmd, char } for (i=0; itype->write_memory(target, address + i*wordsize, 4, 1, value_buf); - break; - case 2: - retval = target->type->write_memory(target, address + i*wordsize, 2, 1, value_buf); - break; - case 1: - retval = target->type->write_memory(target, address + i*wordsize, 1, 1, value_buf); - break; - default: - return ERROR_OK; - } - keep_alive(); - - if (retval!=ERROR_OK) - { + int retval = target_write_memory(target, + address + i * wordsize, wordsize, 1, value_buf); + if (ERROR_OK != retval) return retval; - } + keep_alive(); } return ERROR_OK; @@ -2168,7 +2242,8 @@ static int handle_dump_image_command(struct command_context_s *cmd_ctx, char *cm if (retval==ERROR_OK) { - command_print(cmd_ctx, "dumped %"PRIi64" byte in %s", fileio.size, duration_text); + command_print(cmd_ctx, "dumped %lld byte in %s", + fileio.size, duration_text); free(duration_text); } @@ -2268,7 +2343,7 @@ static int handle_verify_image_command_internal(struct command_context_s *cmd_ct size *= 4; count /= 4; } - retval = target->type->read_memory(target, image.sections[i].base_address, size, count, data); + retval = target_read_memory(target, image.sections[i].base_address, size, count, data); if (retval == ERROR_OK) { u32 t; @@ -2369,7 +2444,8 @@ static int handle_bp_command(struct command_context_s *cmd_ctx, char *cmd, char } else { - command_print(cmd_ctx, "breakpoint added at address 0x%8.8x", strtoul(args[0], NULL, 0)); + command_print(cmd_ctx, "breakpoint added at address 0x%8.8lx", + strtoul(args[0], NULL, 0)); } } else @@ -2840,7 +2916,7 @@ static int target_mem2array(Jim_Interp *interp, target_t *target, int argc, Jim_ count = (sizeof(buffer)/width); } - retval = target->type->read_memory( target, addr, width, count, buffer ); + retval = target_read_memory( target, addr, width, count, buffer ); if (retval != ERROR_OK) { /* BOO !*/ LOG_ERROR("mem2array: Read @ 0x%08x, w=%d, cnt=%d, failed", addr, width, count); @@ -3039,7 +3115,7 @@ static int target_array2mem(Jim_Interp *interp, target_t *target, int argc, Jim_ } len -= count; - retval = target->type->write_memory(target, addr, width, count, buffer); + retval = target_write_memory(target, addr, width, count, buffer); if (retval != ERROR_OK) { /* BOO !*/ LOG_ERROR("array2mem: Write @ 0x%08x, w=%d, cnt=%d, failed", addr, width, count); @@ -3084,7 +3160,7 @@ void target_handle_event( target_t *target, enum target_event e ) 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 ) ); @@ -3173,7 +3249,7 @@ static int target_configure( Jim_GetOptInfo *goi, target_t *target ) 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: @@ -3372,7 +3448,7 @@ static int target_configure( Jim_GetOptInfo *goi, target_t *target ) if( e != JIM_OK ){ return e; } - tap = jtag_TapByJimObj( goi->interp, o ); + tap = jtag_tap_by_jim_obj( goi->interp, o ); if( tap == NULL ){ return JIM_ERR; } @@ -3530,7 +3606,7 @@ static int tcl_target_func( Jim_Interp *interp, int argc, Jim_Obj *const *argv ) break; } for( x = 0 ; x < c ; x++ ){ - e = target->type->write_memory( target, a, b, 1, target_buf ); + e = target_write_memory( target, a, b, 1, target_buf ); if( e != ERROR_OK ){ Jim_SetResult_sprintf( interp, "Error writing @ 0x%08x: %d\n", (int)(a), e ); return JIM_ERR; @@ -3586,7 +3662,7 @@ static int tcl_target_func( Jim_Interp *interp, int argc, Jim_Obj *const *argv ) if( y > 16 ){ y = 16; } - e = target->type->read_memory( target, a, b, y / b, target_buf ); + e = target_read_memory( target, a, b, y / b, target_buf ); if( e != ERROR_OK ){ Jim_SetResult_sprintf( interp, "error reading target @ 0x%08lx", (int)(a) ); return JIM_ERR; @@ -3669,7 +3745,7 @@ static int tcl_target_func( Jim_Interp *interp, int argc, Jim_Obj *const *argv ) Jim_WrongNumArgs( goi.interp, 2, argv, "[no parameters]"); return JIM_ERR; } - if( !(target->type->examined) ){ + if( !(target_was_examined(target)) ){ e = ERROR_TARGET_NOT_EXAMINED; } else { e = target->type->poll( target );