From: Øyvind Harboe Date: Wed, 11 Aug 2010 08:58:49 +0000 (+0200) Subject: arm: add missing error reporting X-Git-Tag: v0.5.0-rc1~461 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=f941192723f7d71ae4a9a8f011dad5909f156da3;p=openocd 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 --- diff --git a/src/target/arm7_9_common.c b/src/target/arm7_9_common.c index 3bbe8b07..778e606b 100644 --- a/src/target/arm7_9_common.c +++ b/src/target/arm7_9_common.c @@ -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 diff --git a/src/target/arm920t.c b/src/target/arm920t.c index 90f548f3..a3a5adf1 100644 --- a/src/target/arm920t.c +++ b/src/target/arm920t.c @@ -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; diff --git a/src/target/armv4_5.c b/src/target/armv4_5.c index d950af36..07c8c6eb 100644 --- a/src/target/armv4_5.c +++ b/src/target/armv4_5.c @@ -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)