moved srst_pulls_trst check into arm7_9_common.c. Not tested yet, if it is broken...
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Wed, 21 May 2008 07:28:33 +0000 (07:28 +0000)
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Wed, 21 May 2008 07:28:33 +0000 (07:28 +0000)
git-svn-id: svn://svn.berlios.de/openocd/trunk@670 b42882b7-edfa-0310-969c-e2dbd0fdcd60

src/target/arm7_9_common.c
src/target/target.c

index 249d8d4c1cd160d41ec939742d95b8e314a31055..517badfdf79383f20fa66676b362062393eb5475 100644 (file)
@@ -693,10 +693,33 @@ int arm7_9_poll(target_t *target)
                }
                if ((target->state == TARGET_RUNNING) || (target->state == TARGET_RESET))
                {
+                       int check_pc=0;
                        target->state = TARGET_HALTED;
+                       
+                       if (target->state == TARGET_RESET)
+                       {
+                               if ((target->reset_mode == RESET_HALT) || (target->reset_mode == RESET_INIT))
+                               {
+                                       if ((jtag_reset_config & RESET_SRST_PULLS_TRST)==0)
+                                       {
+                                               check_pc = 1;
+                                       }
+                               }
+                       }
+                       
                        if ((retval = arm7_9_debug_entry(target)) != ERROR_OK)
                                return retval;
                        
+                       if (check_pc)
+                       {
+                               reg_t *reg = register_get_by_name(target->reg_cache, "pc", 1);
+                               u32 t=*((u32 *)reg->value);
+                               if (t!=0)
+                               {
+                                       LOG_ERROR("PC was not 0. Does this target does target need srst_pulls_trst?");
+                               }
+                       }
+                       
                        target_call_event_callbacks(target, TARGET_EVENT_HALTED);
                }
                if (target->state == TARGET_DEBUG_RUNNING)
index d1e807284c355380b1aa43d511549f16a478f41d..5b0457f5a65ed03801627e54ae1bf5314a1c957f 100644 (file)
@@ -225,16 +225,6 @@ int target_init_handler(struct target_s *target, enum target_event event, void *
        
        if ((event == TARGET_EVENT_HALTED) && (target->reset_script))
        {
-               if ((jtag_reset_config & RESET_SRST_PULLS_TRST)==0)
-               {
-                       reg_t *reg = register_get_by_name(target->reg_cache, "pc", 1);
-                       u32 t=*((u32 *)reg->value);
-                       if (t!=0)
-                       {
-                               LOG_ERROR("PC was not 0. Does this target does target need srst_pulls_trst?");
-                       }
-               }
-
                target_unregister_event_callback(target_init_handler, priv);
 
                script = open_file_from_path(target->reset_script, "r");