This is an automated email from Gerrit.

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

-- gerrit

commit 22bfe92ff90377d91a6fb8e6086b9f5cb3b755b1
Author: Kevin Yang <[email protected]>
Date:   Wed Sep 2 22:50:27 2020 -0700

    target/armv8: handle halted aarch32
    
    On connection to halted aarch32, openocd tries and fails to read aarch64
    registers. Change armv8_dpm_read_current_registers and armv8_reg_current
    to be core_state aware and switch the register cache appropriately.
    
    Change-Id: Ie3801c64613fd843985fd16fb798b44ec38a87d2
    Signed-off-by: Kevin Yang <[email protected]>

diff --git a/src/target/armv8.c b/src/target/armv8.c
index e47f659..26bbd1e 100644
--- a/src/target/armv8.c
+++ b/src/target/armv8.c
@@ -1706,7 +1706,11 @@ struct reg *armv8_reg_current(struct arm *arm, unsigned 
regnum)
        if (regnum > (ARMV8_LAST_REG - 1))
                return NULL;
 
-       r = arm->core_cache->reg_list + regnum;
+       if (arm->core_state == ARM_STATE_AARCH64)
+               r = arm->core_cache->reg_list + regnum;
+       else
+               r = arm->core_cache->next->reg_list + regnum;
+
        return r;
 }
 
diff --git a/src/target/armv8_dpm.c b/src/target/armv8_dpm.c
index 90cf4e0..06ec74d 100644
--- a/src/target/armv8_dpm.c
+++ b/src/target/armv8_dpm.c
@@ -745,12 +745,17 @@ int armv8_dpm_read_current_registers(struct arm_dpm *dpm)
        struct reg *r;
        uint32_t cpsr;
        int retval;
+       enum arm_state core_state;
 
        retval = dpm->prepare(dpm);
        if (retval != ERROR_OK)
                return retval;
 
-       cache = arm->core_cache;
+       core_state = armv8_dpm_get_core_state(dpm);
+       if (core_state == ARM_STATE_AARCH64)
+               cache = arm->core_cache;
+       else
+               cache = arm->core_cache->next;
 
        /* read R0 first (it's used for scratch), then CPSR */
        r = cache->reg_list + ARMV8_R0;

-- 


_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to