I do not know why this is necessary, but it fixes strange effects
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Fri, 26 Sep 2008 18:00:10 +0000 (18:00 +0000)
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Fri, 26 Sep 2008 18:00:10 +0000 (18:00 +0000)
       (step/resume cause a NMI after reset) on LM3S6918 -- Michael Schwingen

git-svn-id: svn://svn.berlios.de/openocd/trunk@1008 b42882b7-edfa-0310-969c-e2dbd0fdcd60

src/target/cortex_m3.c

index e2d906d62c184565c863f27a7d9b9352e9caf06c..14a781cef3a96777e896934adb122c9324a714c2 100644 (file)
@@ -376,7 +376,7 @@ int cortex_m3_debug_entry(target_t *target)
 int cortex_m3_poll(target_t *target)
 {
        int retval;
-       u32 prev_target_state = target->state;
+       enum target_state prev_target_state = target->state;
        
        /* get pointers to arch-specific information */
        armv7m_common_t *armv7m = target->arch_info;
@@ -762,6 +762,13 @@ int cortex_m3_assert_reset(target_t *target)
                /* this causes the luminary device to reset using the watchdog */
                ahbap_write_system_atomic_u32(swjdp, NVIC_AIRCR, AIRCR_VECTKEY | AIRCR_SYSRESETREQ );
                LOG_DEBUG("Using Luminary Reset: SYSRESETREQ");
+
+               {
+                       /* I do not know why this is necessary, but it fixes strange effects
+                      (step/resume cause a NMI after reset) on LM3S6918 -- Michael Schwingen */
+                       u32 tmp;
+                       ahbap_read_system_atomic_u32(swjdp, NVIC_AIRCR, &tmp );
+       }
        }
        
        target->state = TARGET_RESET;