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:
parent
ba951aede3
commit
f941192723
src/target
|
@ -2,7 +2,7 @@
|
||||||
* Copyright (C) 2005 by Dominic Rath *
|
* Copyright (C) 2005 by Dominic Rath *
|
||||||
* Dominic.Rath@gmx.de *
|
* Dominic.Rath@gmx.de *
|
||||||
* *
|
* *
|
||||||
* Copyright (C) 2007-2009 Øyvind Harboe *
|
* Copyright (C) 2007-2010 Øyvind Harboe *
|
||||||
* oyvind.harboe@zylin.com *
|
* oyvind.harboe@zylin.com *
|
||||||
* *
|
* *
|
||||||
* Copyright (C) 2008 by Spencer Oliver *
|
* 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))
|
if (!is_arm_mode(armv4_5->core_mode))
|
||||||
|
{
|
||||||
|
LOG_ERROR("not a valid arm core mode - communication failure?");
|
||||||
return ERROR_FAIL;
|
return ERROR_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
/* iterate through processor modes (User, FIQ, IRQ, SVC, ABT, UND)
|
/* iterate through processor modes (User, FIQ, IRQ, SVC, ABT, UND)
|
||||||
* SYS shares registers with User, so we don't touch SYS
|
* 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);
|
arm7_9->pre_restore_context(target);
|
||||||
|
|
||||||
if (!is_arm_mode(armv4_5->core_mode))
|
if (!is_arm_mode(armv4_5->core_mode))
|
||||||
|
{
|
||||||
|
LOG_ERROR("not a valid arm core mode - communication failure?");
|
||||||
return ERROR_FAIL;
|
return ERROR_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
/* iterate through processor modes (User, FIQ, IRQ, SVC, ABT, UND)
|
/* iterate through processor modes (User, FIQ, IRQ, SVC, ABT, UND)
|
||||||
* SYS shares registers with User, so we don't touch SYS
|
* SYS shares registers with User, so we don't touch SYS
|
||||||
|
|
|
@ -281,7 +281,10 @@ static int arm920t_read_cp15_interpreted(struct target *target,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!is_arm_mode(armv4_5->core_mode))
|
if (!is_arm_mode(armv4_5->core_mode))
|
||||||
|
{
|
||||||
|
LOG_ERROR("not a valid arm core mode - communication failure?");
|
||||||
return ERROR_FAIL;
|
return ERROR_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
r[0].dirty = 1;
|
r[0].dirty = 1;
|
||||||
r[1].dirty = 1;
|
r[1].dirty = 1;
|
||||||
|
@ -323,7 +326,10 @@ int arm920t_write_cp15_interpreted(struct target *target,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!is_arm_mode(armv4_5->core_mode))
|
if (!is_arm_mode(armv4_5->core_mode))
|
||||||
|
{
|
||||||
|
LOG_ERROR("not a valid arm core mode - communication failure?");
|
||||||
return ERROR_FAIL;
|
return ERROR_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
r[0].dirty = 1;
|
r[0].dirty = 1;
|
||||||
r[1].dirty = 1;
|
r[1].dirty = 1;
|
||||||
|
@ -1154,7 +1160,10 @@ COMMAND_HANDLER(arm920t_handle_read_cache_command)
|
||||||
fclose(output);
|
fclose(output);
|
||||||
|
|
||||||
if (!is_arm_mode(armv4_5->core_mode))
|
if (!is_arm_mode(armv4_5->core_mode))
|
||||||
|
{
|
||||||
|
LOG_ERROR("not a valid arm core mode - communication failure?");
|
||||||
return ERROR_FAIL;
|
return ERROR_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
/* force writeback of the valid data */
|
/* force writeback of the valid data */
|
||||||
r = armv4_5->core_cache->reg_list;
|
r = armv4_5->core_cache->reg_list;
|
||||||
|
@ -1481,7 +1490,10 @@ COMMAND_HANDLER(arm920t_handle_read_mmu_command)
|
||||||
fclose(output);
|
fclose(output);
|
||||||
|
|
||||||
if (!is_arm_mode(armv4_5->core_mode))
|
if (!is_arm_mode(armv4_5->core_mode))
|
||||||
|
{
|
||||||
|
LOG_ERROR("not a valid arm core mode - communication failure?");
|
||||||
return ERROR_FAIL;
|
return ERROR_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
/* force writeback of the valid data */
|
/* force writeback of the valid data */
|
||||||
r = armv4_5->core_cache->reg_list;
|
r = armv4_5->core_cache->reg_list;
|
||||||
|
|
|
@ -634,7 +634,10 @@ COMMAND_HANDLER(handle_armv4_5_reg_command)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!is_arm_mode(armv4_5->core_mode))
|
if (!is_arm_mode(armv4_5->core_mode))
|
||||||
|
{
|
||||||
|
LOG_ERROR("not a valid arm core mode - communication failure?");
|
||||||
return ERROR_FAIL;
|
return ERROR_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
if (!armv4_5->full_context) {
|
if (!armv4_5->full_context) {
|
||||||
command_print(CMD_CTX, "error: target doesn't support %s",
|
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;
|
int i;
|
||||||
|
|
||||||
if (!is_arm_mode(armv4_5->core_mode))
|
if (!is_arm_mode(armv4_5->core_mode))
|
||||||
|
{
|
||||||
|
LOG_ERROR("not a valid arm core mode - communication failure?");
|
||||||
return ERROR_FAIL;
|
return ERROR_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
*reg_list_size = 26;
|
*reg_list_size = 26;
|
||||||
*reg_list = malloc(sizeof(struct reg*) * (*reg_list_size));
|
*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))
|
if (!is_arm_mode(armv4_5->core_mode))
|
||||||
|
{
|
||||||
|
LOG_ERROR("not a valid arm core mode - communication failure?");
|
||||||
return ERROR_FAIL;
|
return ERROR_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
/* armv5 and later can terminate with BKPT instruction; less overhead */
|
/* armv5 and later can terminate with BKPT instruction; less overhead */
|
||||||
if (!exit_point && armv4_5->is_armv4)
|
if (!exit_point && armv4_5->is_armv4)
|
||||||
|
|
Loading…
Reference in New Issue