extern target_type_t arm926ejs_target;
extern target_type_t fa526_target;
extern target_type_t feroceon_target;
+extern target_type_t dragonite_target;
extern target_type_t xscale_target;
extern target_type_t cortexm3_target;
extern target_type_t cortexa8_target;
&arm926ejs_target,
&fa526_target,
&feroceon_target,
+ &dragonite_target,
&xscale_target,
&cortexm3_target,
&cortexa8_target,
{ .value = TARGET_EVENT_OLD_gdb_program_config , .name = "old-gdb_program_config" },
{ .value = TARGET_EVENT_OLD_pre_resume , .name = "old-pre_resume" },
- { .value = TARGET_EVENT_EARLY_HALTED, .name = "early-halted" },
+ { .value = TARGET_EVENT_GDB_HALT, .name = "gdb-halt" },
{ .value = TARGET_EVENT_HALTED, .name = "halted" },
{ .value = TARGET_EVENT_RESUMED, .name = "resumed" },
{ .value = TARGET_EVENT_RESUME_START, .name = "resume-start" },
if (event == TARGET_EVENT_HALTED)
{
/* execute early halted first */
- target_call_event_callbacks(target, TARGET_EVENT_EARLY_HALTED);
+ target_call_event_callbacks(target, TARGET_EVENT_GDB_HALT);
}
LOG_DEBUG("target event %i (%s)",
address += aligned;
size -= aligned;
}
-
+
/*prevent byte access when possible (avoid AHB access limitations in some cases)*/
if(size >=2)
{
return ERROR_OK;
}
+static void target_call_event_callbacks_all(enum target_event e) {
+ target_t *target;
+ target = all_targets;
+ while (target) {
+ target_call_event_callbacks(target, e);
+ target = target->next;
+ }
+}
+
/* process target state changes */
int handle_target(void *priv)
{
int did_something = 0;
if (runSrstAsserted)
{
+ target_call_event_callbacks_all(TARGET_EVENT_GDB_HALT);
Jim_Eval(interp, "srst_asserted");
did_something = 1;
}
}
if (runPowerDropout)
{
+ target_call_event_callbacks_all(TARGET_EVENT_GDB_HALT);
Jim_Eval(interp, "power_dropout");
did_something = 1;
}
{
/* polling may fail silently until the target has been examined */
if ((retval = target_poll(target)) != ERROR_OK)
+ {
+ target_call_event_callbacks(target, TARGET_EVENT_GDB_HALT);
return retval;
+ }
}
}
break;
}
image_size += length;
- command_print(cmd_ctx, "%u byte written at address 0x%8.8" PRIx32 "",
+ command_print(cmd_ctx, "%u bytes written at address 0x%8.8" PRIx32 "",
(unsigned int)length,
image.sections[i].base_address + offset);
}
void target_handle_event(target_t *target, enum target_event e)
{
target_event_action_t *teap;
- int done;
-
- teap = target->event_action;
- done = 0;
- while (teap) {
+ for (teap = target->event_action; teap != NULL; teap = teap->next) {
if (teap->event == e) {
- done = 1;
LOG_DEBUG("target: (%d) %s (%s) event: %d (%s) action: %s",
target->target_number,
target->cmd_name,
Jim_PrintErrorMessage(interp);
}
}
- teap = teap->next;
- }
- if (!done) {
- LOG_DEBUG("event: %d %s - no action",
- e,
- Jim_Nvp_value2name_simple(nvp_target_event, e)->name);
}
}
break;
case TS_CMD_RESET:
if (goi.argc != 2) {
- Jim_WrongNumArgs(interp, 2, argv, "t | f|assert | deassert BOOL");
+ Jim_WrongNumArgs(interp, 2, argv,
+ "([tT]|[fF]|assert|deassert) BOOL");
return JIM_ERR;
}
e = Jim_GetOpt_Nvp(&goi, nvp_assert, &n);
fastload[i].length = length;
image_size += length;
- command_print(cmd_ctx, "%u byte written at address 0x%8.8x",
+ command_print(cmd_ctx, "%u bytes written at address 0x%8.8x",
(unsigned int)length,
((unsigned int)(image.sections[i].base_address + offset)));
}