arm7_9->eice_cache = (*cache_p);
if (arm7_9->armv4_5_common.etm)
- {
- struct arm_jtag *jtag_info = &arm7_9->jtag_info;
(*cache_p)->next = etm_build_reg_cache(target,
- jtag_info, arm7_9->armv4_5_common.etm);
- arm7_9->armv4_5_common.etm->reg_cache = (*cache_p)->next;
- }
+ &arm7_9->jtag_info,
+ arm7_9->armv4_5_common.etm);
+
target_set_examined(target);
}
if ((retval = embeddedice_setup(target)) != ERROR_OK)
arm7_9->eice_cache = (*cache_p);
if (arm7_9->armv4_5_common.etm)
- {
- struct arm_jtag *jtag_info = &arm7_9->jtag_info;
(*cache_p)->next = etm_build_reg_cache(target,
- jtag_info, arm7_9->armv4_5_common.etm);
- arm7_9->armv4_5_common.etm->reg_cache = (*cache_p)->next;
- }
+ &arm7_9->jtag_info,
+ arm7_9->armv4_5_common.etm);
+
target_set_examined(target);
}
if ((retval = embeddedice_setup(target)) != ERROR_OK)
break;
default:
LOG_WARNING("Bad ETMv1 protocol %d", config >> 28);
- free(reg_cache);
- free(reg_list);
- free(arch_info);
- return ERROR_OK;
+ goto fail;
}
}
etm_ctx->bcd_vers = bcd_vers;
if (!etb)
{
LOG_ERROR("etb selected as etm capture driver, but no ETB configured");
- free(reg_cache);
- free(reg_list);
- free(arch_info);
- return ERROR_OK;
+ goto fail;
}
reg_cache->next = etb_build_reg_cache(etb);
etm_ctx->reg_cache = reg_cache;
return reg_cache;
+
+fail:
+ free(reg_cache);
+ free(reg_list);
+ free(arch_info);
+ return NULL;
}
static int etm_read_reg(struct reg *reg)