This is an automated email from Gerrit.

Hsiangkai Wang ([email protected]) just uploaded a new patch set to Gerrit, 
which you can find at http://openocd.zylin.com/1316

-- gerrit

commit 45a1cfbb529014f801fb120fed493c745a801be6
Author: Hsiangkai <[email protected]>
Date:   Fri Apr 12 09:41:43 2013 +0800

    nds32: avoid redundant polling
    
    To enable/disable polling appropriately.
    
    Enable polling when
    1. exit debug mode
    2. assert_reset
    
    Disable polling when
    1. enter debug mode
    2. deassert_reset
    
    Change-Id: I724071feb4e9563d43e7e18fb876eb6800c6c402
    Signed-off-by: Hsiangkai <[email protected]>

diff --git a/src/target/nds32.c b/src/target/nds32.c
index 0738461..d948c82 100644
--- a/src/target/nds32.c
+++ b/src/target/nds32.c
@@ -2176,6 +2176,8 @@ int nds32_assert_reset(struct target *target)
        struct nds32 *nds32 = target_to_nds32(target);
        struct aice_port_s *aice = target_to_aice(target);
 
+       jtag_poll_set_enabled(true);
+
        if (target->reset_halt) {
                if (nds32->soft_reset_halt)
                        target->type->soft_reset_halt(target);
@@ -2213,6 +2215,7 @@ static int nds32_gdb_attach(struct nds32 *nds32)
                }
 
                target_halt(nds32->target);
+               target_poll(nds32->target);
 
                gdb_attached = true;
        }
diff --git a/src/target/nds32_v2.c b/src/target/nds32_v2.c
index 683fb33..6c286f9 100644
--- a/src/target/nds32_v2.c
+++ b/src/target/nds32_v2.c
@@ -275,6 +275,10 @@ static int nds32_v2_restore_interrupt_stack(struct 
nds32_v2_common *nds32_v2)
  */
 static int nds32_v2_debug_entry(struct nds32 *nds32, bool enable_watchpoint)
 {
+       LOG_DEBUG("nds32_v2_debug_entry");
+
+       jtag_poll_set_enabled(false);
+
        struct nds32_v2_common *nds32_v2 = target_to_nds32_v2(nds32->target);
 
        CHECK_RETVAL(nds32_v2_deactivate_hardware_breakpoint(nds32->target));
@@ -352,6 +356,8 @@ static int nds32_v2_leave_debug_state(struct nds32 *nds32, 
bool enable_watchpoin
 
        register_cache_invalidate(nds32->core_cache);
 
+       jtag_poll_set_enabled(true);
+
        return ERROR_OK;
 }
 
@@ -389,6 +395,10 @@ static int nds32_v2_deassert_reset(struct target *target)
                retval = target_halt(target);
                if (retval != ERROR_OK)
                        return retval;
+               /* call target_poll() to avoid "Halt timed out" */
+               CHECK_RETVAL(target_poll(target));
+       } else {
+               jtag_poll_set_enabled(false);
        }
 
        return ERROR_OK;
diff --git a/src/target/nds32_v3.c b/src/target/nds32_v3.c
index 82e6fb6..0e80592 100644
--- a/src/target/nds32_v3.c
+++ b/src/target/nds32_v3.c
@@ -475,8 +475,12 @@ static int nds32_v3_deassert_reset(struct target *target)
                retval = target_halt(target);
                if (retval != ERROR_OK)
                        return retval;
+
+               /* call target_poll() to avoid "Halt timed out" */
+               CHECK_RETVAL(target_poll(target));
        } else {
                /* reset-halt */
+               jtag_poll_set_enabled(false);
 
                struct nds32_v3_common *nds32_v3 = target_to_nds32_v3(target);
                struct nds32 *nds32 = &(nds32_v3->nds32);
diff --git a/src/target/nds32_v3m.c b/src/target/nds32_v3m.c
index 781f686..d28f766 100644
--- a/src/target/nds32_v3m.c
+++ b/src/target/nds32_v3m.c
@@ -209,6 +209,10 @@ static int nds32_v3m_restore_interrupt_stack(struct 
nds32_v3m_common *nds32_v3m)
  */
 static int nds32_v3m_debug_entry(struct nds32 *nds32, bool enable_watchpoint)
 {
+       LOG_DEBUG("nds32_v3m_debug_entry");
+
+       jtag_poll_set_enabled(false);
+
        struct nds32_v3m_common *nds32_v3m = target_to_nds32_v3m(nds32->target);
 
        /* deactivate all hardware breakpoints */
@@ -290,6 +294,9 @@ static int nds32_v3m_leave_debug_state(struct nds32 *nds32, 
bool enable_watchpoi
 
        register_cache_invalidate(nds32->core_cache);
 
+       /* enable polling */
+       jtag_poll_set_enabled(true);
+
        return ERROR_OK;
 }
 
@@ -312,6 +319,10 @@ static int nds32_v3m_deassert_reset(struct target *target)
                retval = target_halt(target);
                if (retval != ERROR_OK)
                        return retval;
+               /* call target_poll() to avoid "Halt timed out" */
+               CHECK_RETVAL(target_poll(target));
+       } else {
+               jtag_poll_set_enabled(false);
        }
 
        return ERROR_OK;

-- 

------------------------------------------------------------------------------
Precog is a next-generation analytics platform capable of advanced
analytics on semi-structured data. The platform includes APIs for building
apps and a phenomenal toolset for data science. Developers can use
our toolset for easy data analysis & visualization. Get a free account!
http://www2.precog.com/precogplatform/slashdotnewsletter
_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to