This is an automated email from Gerrit.

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

-- gerrit

commit c0aee283a5d8a28395cadb0b879680865dd7c4c8
Author: Paul Fertser <[email protected]>
Date:   Thu Mar 13 13:27:45 2014 +0400

    arm11: initialise DPM and register cache before reading DSCR for the first 
time
    
    When target was already halted during the initial examination,
    arm11_check_init() was trying to read, store and interpret DSCR
    contents before the DPM structure is initialised. This caused
    a segfault like described on
    http://sourceforge.net/apps/trac/openocd/ticket/65 .
    
    This is a totally untested attempt to fix this issue.
    
    Change-Id: I2fff115679a3f0023e7a88c749ccb5f045d6cf01
    Signed-off-by: Paul Fertser <[email protected]>

diff --git a/src/target/arm11.c b/src/target/arm11.c
index 61f1f64..0cb1d8c 100644
--- a/src/target/arm11.c
+++ b/src/target/arm11.c
@@ -1177,6 +1177,12 @@ static int arm11_examine(struct target *target)
        LOG_DEBUG("IDCODE %08" PRIx32 " IMPLEMENTOR %02x DIDR %08" PRIx32,
                device_id, implementor, didr);
 
+       /* Build register cache "late", after target_init(), since we
+        * want to know if this core supports Secure Monitor mode.
+        */
+       if (!target_was_examined(target))
+               CHECK_RETVAL(arm11_dpm_init(arm11, didr));
+
        /* as a side-effect this reads DSCR and thus
         * clears the ARM11_DSCR_STICKY_PRECISE_DATA_ABORT / Sticky Precise 
Data Abort Flag
         * as suggested by the spec.
@@ -1186,12 +1192,6 @@ static int arm11_examine(struct target *target)
        if (retval != ERROR_OK)
                return retval;
 
-       /* Build register cache "late", after target_init(), since we
-        * want to know if this core supports Secure Monitor mode.
-        */
-       if (!target_was_examined(target))
-               CHECK_RETVAL(arm11_dpm_init(arm11, didr));
-
        /* ETM on ARM11 still uses original scanchain 6 access mode */
        if (arm11->arm.etm && !target_was_examined(target)) {
                *register_get_last_cache_p(&target->reg_cache) =

-- 

------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to