arm: add missing error reporting

when an unknown core mode is read from the target,
report error. Can be communication failure.

Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
This commit is contained in:
Øyvind Harboe 2010-08-11 10:58:49 +02:00
parent ba951aede3
commit f941192723
3 changed files with 28 additions and 1 deletions

View File

@ -2,7 +2,7 @@
* Copyright (C) 2005 by Dominic Rath *
* Dominic.Rath@gmx.de *
* *
* Copyright (C) 2007-2009 Øyvind Harboe *
* Copyright (C) 2007-2010 Øyvind Harboe *
* oyvind.harboe@zylin.com *
* *
* Copyright (C) 2008 by Spencer Oliver *
@ -1518,7 +1518,10 @@ static int arm7_9_full_context(struct target *target)
}
if (!is_arm_mode(armv4_5->core_mode))
{
LOG_ERROR("not a valid arm core mode - communication failure?");
return ERROR_FAIL;
}
/* iterate through processor modes (User, FIQ, IRQ, SVC, ABT, UND)
* SYS shares registers with User, so we don't touch SYS
@ -1621,7 +1624,10 @@ static int arm7_9_restore_context(struct target *target)
arm7_9->pre_restore_context(target);
if (!is_arm_mode(armv4_5->core_mode))
{
LOG_ERROR("not a valid arm core mode - communication failure?");
return ERROR_FAIL;
}
/* iterate through processor modes (User, FIQ, IRQ, SVC, ABT, UND)
* SYS shares registers with User, so we don't touch SYS

View File

@ -281,7 +281,10 @@ static int arm920t_read_cp15_interpreted(struct target *target,
#endif
if (!is_arm_mode(armv4_5->core_mode))
{
LOG_ERROR("not a valid arm core mode - communication failure?");
return ERROR_FAIL;
}
r[0].dirty = 1;
r[1].dirty = 1;
@ -323,7 +326,10 @@ int arm920t_write_cp15_interpreted(struct target *target,
#endif
if (!is_arm_mode(armv4_5->core_mode))
{
LOG_ERROR("not a valid arm core mode - communication failure?");
return ERROR_FAIL;
}
r[0].dirty = 1;
r[1].dirty = 1;
@ -1154,7 +1160,10 @@ COMMAND_HANDLER(arm920t_handle_read_cache_command)
fclose(output);
if (!is_arm_mode(armv4_5->core_mode))
{
LOG_ERROR("not a valid arm core mode - communication failure?");
return ERROR_FAIL;
}
/* force writeback of the valid data */
r = armv4_5->core_cache->reg_list;
@ -1481,7 +1490,10 @@ COMMAND_HANDLER(arm920t_handle_read_mmu_command)
fclose(output);
if (!is_arm_mode(armv4_5->core_mode))
{
LOG_ERROR("not a valid arm core mode - communication failure?");
return ERROR_FAIL;
}
/* force writeback of the valid data */
r = armv4_5->core_cache->reg_list;

View File

@ -634,7 +634,10 @@ COMMAND_HANDLER(handle_armv4_5_reg_command)
}
if (!is_arm_mode(armv4_5->core_mode))
{
LOG_ERROR("not a valid arm core mode - communication failure?");
return ERROR_FAIL;
}
if (!armv4_5->full_context) {
command_print(CMD_CTX, "error: target doesn't support %s",
@ -1046,7 +1049,10 @@ int arm_get_gdb_reg_list(struct target *target,
int i;
if (!is_arm_mode(armv4_5->core_mode))
{
LOG_ERROR("not a valid arm core mode - communication failure?");
return ERROR_FAIL;
}
*reg_list_size = 26;
*reg_list = malloc(sizeof(struct reg*) * (*reg_list_size));
@ -1127,7 +1133,10 @@ int armv4_5_run_algorithm_inner(struct target *target,
}
if (!is_arm_mode(armv4_5->core_mode))
{
LOG_ERROR("not a valid arm core mode - communication failure?");
return ERROR_FAIL;
}
/* armv5 and later can terminate with BKPT instruction; less overhead */
if (!exit_point && armv4_5->is_armv4)