cortex a8: fix segfault for unexamined targets
print error message instead of segfaulting for unexamined targets. Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
This commit is contained in:
parent
b8f8d756a2
commit
2a25c968bf
|
@ -232,6 +232,7 @@ struct dap_ops {
|
||||||
static inline int dap_queue_idcode_read(struct adiv5_dap *dap,
|
static inline int dap_queue_idcode_read(struct adiv5_dap *dap,
|
||||||
uint8_t *ack, uint32_t *data)
|
uint8_t *ack, uint32_t *data)
|
||||||
{
|
{
|
||||||
|
assert(dap->ops != NULL);
|
||||||
return dap->ops->queue_idcode_read(dap, ack, data);
|
return dap->ops->queue_idcode_read(dap, ack, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -250,6 +251,7 @@ static inline int dap_queue_idcode_read(struct adiv5_dap *dap,
|
||||||
static inline int dap_queue_dp_read(struct adiv5_dap *dap,
|
static inline int dap_queue_dp_read(struct adiv5_dap *dap,
|
||||||
unsigned reg, uint32_t *data)
|
unsigned reg, uint32_t *data)
|
||||||
{
|
{
|
||||||
|
assert(dap->ops != NULL);
|
||||||
return dap->ops->queue_dp_read(dap, reg, data);
|
return dap->ops->queue_dp_read(dap, reg, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -267,6 +269,7 @@ static inline int dap_queue_dp_read(struct adiv5_dap *dap,
|
||||||
static inline int dap_queue_dp_write(struct adiv5_dap *dap,
|
static inline int dap_queue_dp_write(struct adiv5_dap *dap,
|
||||||
unsigned reg, uint32_t data)
|
unsigned reg, uint32_t data)
|
||||||
{
|
{
|
||||||
|
assert(dap->ops != NULL);
|
||||||
return dap->ops->queue_dp_write(dap, reg, data);
|
return dap->ops->queue_dp_write(dap, reg, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -283,6 +286,7 @@ static inline int dap_queue_dp_write(struct adiv5_dap *dap,
|
||||||
static inline int dap_queue_ap_read(struct adiv5_dap *dap,
|
static inline int dap_queue_ap_read(struct adiv5_dap *dap,
|
||||||
unsigned reg, uint32_t *data)
|
unsigned reg, uint32_t *data)
|
||||||
{
|
{
|
||||||
|
assert(dap->ops != NULL);
|
||||||
return dap->ops->queue_ap_read(dap, reg, data);
|
return dap->ops->queue_ap_read(dap, reg, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -298,6 +302,7 @@ static inline int dap_queue_ap_read(struct adiv5_dap *dap,
|
||||||
static inline int dap_queue_ap_write(struct adiv5_dap *dap,
|
static inline int dap_queue_ap_write(struct adiv5_dap *dap,
|
||||||
unsigned reg, uint32_t data)
|
unsigned reg, uint32_t data)
|
||||||
{
|
{
|
||||||
|
assert(dap->ops != NULL);
|
||||||
return dap->ops->queue_ap_write(dap, reg, data);
|
return dap->ops->queue_ap_write(dap, reg, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -314,6 +319,7 @@ static inline int dap_queue_ap_write(struct adiv5_dap *dap,
|
||||||
*/
|
*/
|
||||||
static inline int dap_queue_ap_abort(struct adiv5_dap *dap, uint8_t *ack)
|
static inline int dap_queue_ap_abort(struct adiv5_dap *dap, uint8_t *ack)
|
||||||
{
|
{
|
||||||
|
assert(dap->ops != NULL);
|
||||||
return dap->ops->queue_ap_abort(dap, ack);
|
return dap->ops->queue_ap_abort(dap, ack);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -329,6 +335,7 @@ static inline int dap_queue_ap_abort(struct adiv5_dap *dap, uint8_t *ack)
|
||||||
*/
|
*/
|
||||||
static inline int dap_run(struct adiv5_dap *dap)
|
static inline int dap_run(struct adiv5_dap *dap)
|
||||||
{
|
{
|
||||||
|
assert(dap->ops != NULL);
|
||||||
return dap->ops->run(dap);
|
return dap->ops->run(dap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1839,10 +1839,13 @@ COMMAND_HANDLER(cortex_a8_handle_cache_info_command)
|
||||||
COMMAND_HANDLER(cortex_a8_handle_dbginit_command)
|
COMMAND_HANDLER(cortex_a8_handle_dbginit_command)
|
||||||
{
|
{
|
||||||
struct target *target = get_current_target(CMD_CTX);
|
struct target *target = get_current_target(CMD_CTX);
|
||||||
|
if (!target_was_examined(target))
|
||||||
|
{
|
||||||
|
LOG_ERROR("target not examined yet");
|
||||||
|
return ERROR_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
cortex_a8_init_debug_access(target);
|
return cortex_a8_init_debug_access(target);
|
||||||
|
|
||||||
return ERROR_OK;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct command_registration cortex_a8_exec_command_handlers[] = {
|
static const struct command_registration cortex_a8_exec_command_handlers[] = {
|
||||||
|
|
Loading…
Reference in New Issue