From bc25d4fa5eab27326c607f90f9f5f5393b3e632e Mon Sep 17 00:00:00 2001
From: oharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Date: Mon, 13 Oct 2008 10:30:33 +0000
Subject: [PATCH] Fixed gaffes in reset script handling + improved error
 messages a bit. The file and line # of the syntax error in a reset script is
 now printed.

git-svn-id: svn://svn.berlios.de/openocd/trunk@1042 b42882b7-edfa-0310-969c-e2dbd0fdcd60
---
 src/helper/startup.tcl        | 80 +++++++++++++++++------------------
 src/target/target.c           | 10 +++--
 src/target/target/lpc2148.cfg |  2 +-
 3 files changed, 48 insertions(+), 44 deletions(-)

diff --git a/src/helper/startup.tcl b/src/helper/startup.tcl
index e3d750e08..a8006702b 100644
--- a/src/helper/startup.tcl
+++ b/src/helper/startup.tcl
@@ -212,11 +212,11 @@ proc ocd_process_reset { MODE } {
     }
 
     foreach t [ target names ] {
-	# For compatiblity with 'old scripts'
-	$t invoke-event old-pre_reset
-
-	# New event script.
-	$t invoke-event reset-start
+		# For compatiblity with 'old scripts'
+		$t invoke-event old-pre_reset
+	
+		# New event script.
+		$t invoke-event reset-start
     }
 
     # Init the tap controller.
@@ -224,60 +224,60 @@ proc ocd_process_reset { MODE } {
 
     # Examine all targets.
     foreach t [ target names ] {
-	$t arp_examine
+		$t arp_examine
     }
 
     # Let the C code know we are asserting reset.
     foreach t [ target names ] {
-	$t invoke-event reset-assert-pre
-	# C code needs to know if we expect to 'halt'
-	$t arp_reset assert $halt
-	$t invoke-event reset-assert-post
+		$t invoke-event reset-assert-pre
+		# C code needs to know if we expect to 'halt'
+		$t arp_reset assert $halt
+		$t invoke-event reset-assert-post
     }
 
     # Now de-assert reset.
     foreach t [ target names ] {
-	$t invoke-event reset-deassert-pre
-	# Again, de-assert code needs to know..
-	$t arp_reset deassert $halt
-	$t invoke-event reset-deassert-post
+		$t invoke-event reset-deassert-pre
+		# Again, de-assert code needs to know..
+		$t arp_reset deassert $halt
+		$t invoke-event reset-deassert-post
     }
 
 
     # Pass 1 - Now try to halt.
     if { $halt } {
-	foreach t [target names] {
-
-	    # Wait upto 1 second for target to halt.  Why 1sec? Cause
-	    # the JTAG tap reset signal might be hooked to a slow
-	    # resistor/capacitor circuit - and it might take a while
-	    # to charge
-	    
-	    # Catch, but ignore any errors.
-	    catch { $t arp_waitstate halted 1000 }
-	    
-	    # Did we succeed?
-	    set s [$t curstate]
-	    
-	    if { 0 != [string compare $s "halted" ] } {
-		return -error [format "TARGET: %s - Not halted" $t]
-	    }
-	}
+		foreach t [target names] {
+	
+		    # Wait upto 1 second for target to halt.  Why 1sec? Cause
+		    # the JTAG tap reset signal might be hooked to a slow
+		    # resistor/capacitor circuit - and it might take a while
+		    # to charge
+		    
+		    # Catch, but ignore any errors.
+		    catch { $t arp_waitstate halted 1000 }
+		    
+		    # Did we succeed?
+		    set s [$t curstate]
+		    
+		    if { 0 != [string compare $s "halted" ] } {
+				return -error [format "TARGET: %s - Not halted" $t]
+		    }
+		}
     }
 
     #Pass 2 - if needed "init"
     if { 0 == [string compare init $MODE] } {
-	foreach t [target names] {
-	    set err [catch "$t arp_waitstate halted 5000"]
-	    # Did it halt?
-	    if { $err == 0 } {
-			$t invoke-event old-post_reset
-			$t invoke-event reset-init		
-	    }
-	}
+		foreach t [target names] {
+		    set err [catch "$t arp_waitstate halted 5000"]
+		    # Did it halt?
+		    if { $err == 0 } {
+				$t invoke-event old-post_reset
+				$t invoke-event reset-init		
+		    }
+		}
     }
 
     foreach t [ target names ] {
-	$t invoke-event reset-end
+		$t invoke-event reset-end
     }
 }
diff --git a/src/target/target.c b/src/target/target.c
index 0ba25dbbb..ca34a4d06 100644
--- a/src/target/target.c
+++ b/src/target/target.c
@@ -436,7 +436,8 @@ static int NEW_target_process_reset(struct command_context_s *cmd_ctx, enum targ
 	sprintf( buf, "ocd_process_reset %s", n->name );
 	retval = Jim_Eval( interp, buf );
 
-	if(retval != JIM_ERR){
+	if(retval != JIM_OK) {
+		Jim_PrintErrorMessage(interp);
 		return ERROR_FAIL;
 	}
 
@@ -3112,7 +3113,10 @@ target_handle_event( target_t *target, enum target_event e )
 					   e,
 					   Jim_Nvp_value2name_simple( nvp_target_event, e )->name,
 					   Jim_GetString( teap->body, NULL ) );
-			Jim_EvalObj( interp, teap->body );
+			if (Jim_EvalObj( interp, teap->body )!=JIM_OK)
+			{
+				Jim_PrintErrorMessage(interp);
+			}
 		}
 		teap = teap->next;
 	}
@@ -3215,7 +3219,7 @@ target_configure( Jim_GetOptInfo *goi,
 			}
 
 			if( goi->isconfigure ){
-				if( goi->argc == 0 ){
+				if( goi->argc != 1 ){
 					Jim_WrongNumArgs( goi->interp, goi->argc, goi->argv, "-event ?event-name? ?EVENT-BODY?");
 					return JIM_ERR;
 				}
diff --git a/src/target/target/lpc2148.cfg b/src/target/target/lpc2148.cfg
index 79ec9ecb1..11835a72d 100644
--- a/src/target/target/lpc2148.cfg
+++ b/src/target/target/lpc2148.cfg
@@ -14,7 +14,7 @@ reset_config trst_and_srst srst_pulls_trst
 jtag_device 4 0x1 0xf 0xe
 
 target arm7tdmi little 0 arm7tdmi-s_r4
-[new_target_name] configure -event old-post_reset {} {
+[new_target_name] configure -event old-post_reset {
 	# Force target into ARM state
 	soft_reset_halt
 	#do not remap 0x0000-0x0020 to anything but the flash
-- 
GitLab