Accomodate targets which don't support various target-specific
reset operations.  Maybe they can't; or it's a "not yet" thing.

Note that the assert/deassert operations can't yet trigger for
OMAP3 because resets currently include JTAG reset in all cases,
resetting the ICEpick and thus disabling the TAP for Cortex-A8.
---
 src/target/target.c |   12 ++++++++++++
 1 file changed, 12 insertions(+)

--- a/src/target/target.c
+++ b/src/target/target.c
@@ -559,6 +559,11 @@ static int target_soft_reset_halt_imp(st
                LOG_ERROR("Target not examined yet");
                return ERROR_FAIL;
        }
+       if (!target->type->soft_reset_halt_imp) {
+               LOG_ERROR("Target %s does not support soft_reset_halt",
+                               target->cmd_name);
+               return ERROR_FAIL;
+       }
        return target->type->soft_reset_halt_imp(target);
 }
 
@@ -4035,6 +4040,13 @@ static int tcl_target_func(Jim_Interp *i
                }
                if (!target->tap->enabled)
                        goto err_tap_disabled;
+               if (!target->type->assert_reset
+                               || !target->type->deassert_reset) {
+                       Jim_SetResult_sprintf(interp,
+                                       "No target-specific reset for %s",
+                                       target->cmd_name);
+                       return JIM_ERR;
+               }
                /* determine if we should halt or not. */
                target->reset_halt = !!a;
                /* When this happens - all workareas are invalid. */
Accomodate targets which don't support various target-specific
reset operations.  Maybe they can't; or it's a "not yet" thing.

Note that the assert/deassert operations can't yet trigger for
OMAP3 because resets currently include JTAG reset in all cases,
resetting the ICEpick and thus disabling the TAP for Cortex-A8.
---
 src/target/target.c |   12 ++++++++++++
 1 file changed, 12 insertions(+)

--- a/src/target/target.c
+++ b/src/target/target.c
@@ -559,6 +559,11 @@ static int target_soft_reset_halt_imp(st
 		LOG_ERROR("Target not examined yet");
 		return ERROR_FAIL;
 	}
+	if (!target->type->soft_reset_halt_imp) {
+		LOG_ERROR("Target %s does not support soft_reset_halt",
+				target->cmd_name);
+		return ERROR_FAIL;
+	}
 	return target->type->soft_reset_halt_imp(target);
 }
 
@@ -4035,6 +4040,13 @@ static int tcl_target_func(Jim_Interp *i
 		}
 		if (!target->tap->enabled)
 			goto err_tap_disabled;
+		if (!target->type->assert_reset
+				|| !target->type->deassert_reset) {
+			Jim_SetResult_sprintf(interp,
+					"No target-specific reset for %s",
+					target->cmd_name);
+			return JIM_ERR;
+		}
 		/* determine if we should halt or not. */
 		target->reset_halt = !!a;
 		/* When this happens - all workareas are invalid. */
_______________________________________________
Openocd-development mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to